如何监视Java线程堆栈的内存
当在Solaris x86上的32位jvm上运行Java EE应用程序时,我得到一个OutOfMemoryError:无法创建本地线程(或类似的东西)。
这是因为根据我的理解,jvm没有足够的内存用于新线程的堆栈。
我使用JConsole和VisualVM 1.3来监视应用程序,但我不知道在这些工具中调用了什么“stackmemory”。 在VisualVM中,我可以监视heappace和permgen空间,而JConsole显示更多内存区域。 这些内存区域是否被预留用于堆栈内存? 我知道当然不是堆空间,但是permgen或non-heap(如JConsole中所称的那样)
你也可以试试JProfiler。 在JProfiler中,您可以从CPU分析视图中的线程视图和线程状态中获得提示。 这里是同样的截屏。
您也可以查看以下内容来调试您的问题:(从链接引用)如果遇到此异常,有几件事要做。
你的代码的一部分可能会创建大量的线程。
尝试在代码中使用ThreadPoolExecutor(线程池)来限制应用程序中的线程,并相应地调整线程池大小以获得更好的性能。
链接地址: http://www.djcxy.com/p/82783.html上一篇: How to monitor memory for java thread stacks
下一篇: Type of the first parameter of a member function in C++11