提问者:小点点

内存不足:无法创建新的本机线程


我正在开发一个应用程序,其中客户端(用户)可以控制创建新线程并杀死它们。该应用程序基于Java。

在其中一个情况下,用户创建多个线程并杀死它们并创建新的线程并继续。一段时间后,弹出 OutofMemoryException。我认为这与线程堆栈问题有关。因此,我将线程堆栈XSS从1024KB减少到512KB,并将Java堆大小从Xms 256mb XmX 1024mb减小到Xms 256mb Xmx 512mb。

我还用你的工具包内存分析了应用程序,只是为了看看它是否从堆大小溢出。但它似乎是好的…线程被创建并杀死好的。

这是8GB内存的Windows 7机器

我想知道,是什么原因导致了这个异常?


共1个答案

匿名用户

有3个主要原因。

  1. 内存泄漏
  2. 低效算法
  3. 堆大小太小

这些问题通常可以通过以下方式解决:

  1. 内存泄漏-取消引用不需要的对象
  2. 低效算法-提供更高效的内存算法(有时越少越好)
  3. 堆大小-增加堆大小