【发布时间】:2016-03-29 17:54:30
【问题描述】:
在分析我的应用程序时,我遇到了一个奇怪的行为 - DestroyJavaVM 线程始终在运行 - 100% 的时间。
在对该主题进行了一些研究之后,网上几乎没有任何有价值的信息,我只知道这个帖子应该是unload the JVM upon exit。
如果是这样,为什么从我启动应用程序的第一刻起,这个线程就 100% 处于 RUNNING 状态?它不会消耗宝贵的资源,因此可能会导致OutOfMemoryError(就像我有时会得到的那样)?
对于这个线程实际做什么以及触发它的初始化有什么官方参考?
谢谢
【问题讨论】:
-
其他线程更有可能导致
OOME。我不会从最不明显的嫌疑人开始。您是否分析过您的应用程序线程以供内存使用?这将是调试您神秘的OOMEs 的直接方法。 -
10 倍的答案。当然,我使用其他措施来找出为什么我得到 OOME(顺便说一句,这是一个“GC Overhead Limit Exceeded”错误,这是由 CPU 使用率高引起的),但无济于事。这是我最后的手段。这个线程非常可疑,我想知道它 100% 的时间都在运行什么业务。
标签: java multithreading jvm java-threads