Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 内存不足:无法创建新的本机线程_Java_Multithreading_Operating System - Fatal编程技术网

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

Java 内存不足:无法创建新的本机线程,java,multithreading,operating-system,Java,Multithreading,Operating System,我正在开发一个应用程序,客户端用户可以控制创建新线程并杀死它们。该应用程序基于Java 在其中一种情况下,用户创建多个线程并杀死它们,创建新的线程并继续。一段时间后,弹出OutofMemoryException。我认为这与线程堆栈问题有关。因此,我将线程堆栈XSS从1024KB减少到512KB,并将Java堆大小从Xms 256mb XmX 1024mb减少到Xms 256mb XmX 512mb 我还使用yourkit对应用程序进行了内存分析,以查看它是否从堆大小溢出。但这似乎没问题..线程被

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

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

我还使用yourkit对应用程序进行了内存分析,以查看它是否从堆大小溢出。但这似乎没问题..线程被创建和杀死没问题

这是8GB内存的Windows 7计算机


我想知道,还有什么会导致这种异常?

有三个主要原因

内存泄漏 低效算法 堆大小太小 这些问题通常可以通过以下方式解决:

内存泄漏-取消引用不需要的对象 低效算法-提供内存效率更高的算法有时越少越好 堆大小-增加堆大小
这有三个主要原因

内存泄漏 低效算法 堆大小太小 这些问题通常可以通过以下方式解决:

内存泄漏-取消引用不需要的对象 低效算法-提供内存效率更高的算法有时越少越好 堆大小-增加堆大小
你是怎么杀死那些线的?你确定你要加入他们吗?我打赌这是你代码中的一个bug,你应该发布一些;没有代码,很难回答。你是怎么杀线的?安全的方法是从public void run方法返回。@Isaac当threads runnable完成执行时,线程停止die的运行。是的,我们加入了他们,你是否考虑过使用线程池或执行器,以便在当前任务完成时可以重用线程?你是如何杀死这些线程的?你确定你要加入他们吗?我打赌这是你代码中的一个bug,你应该发布一些;没有代码,很难回答。你是怎么杀线的?安全的方法是从public void run方法返回。@Isaac当threads runnable完成执行时,线程停止die的运行。是的,我们加入了他们,您是否考虑过使用线程池或执行器,以便在当前任务完成时可以重用线程?