任何人都可以告诉我如何看到哪些活动/线程保持活动状态并且我的应用程序不再调用它们?
例如,如果我打开HTTP流然后不刷新,但继续打开新的,则使用的内存将继续上升,直到GC通过清理。是否有可能以某种方式查看哪些线程或对象已生成并且在给定时间x内未使用?
这种请求的原因是由于服务器部署了服务器,这继续增加内存,直到达到限制,因此GC被迫干预以重新建立稳定的内存情况。
我不知道它是否对此分析有帮助,但gcc参数设置为:
-Xms8g -Xmx8g -XX:PermSize = 1024 XX:MaxPermSize = 1024
机器的公羊是18克。
感谢所有提前
要检查对象是否仍在使用,请执行完整GC。这个行动没有捷径可走。
在执行垃圾收集之前,您不知道是否需要对象。
使用的内存将继续上升,直到GC通过清理。
这在JVM中是正常的。为了提高性能,您希望重用昂贵的对象,而不必过于担心廉价对象。您还需要调整GC,以便在运行时,它不会过多地影响您的应用程序。
注意:Perm Gen在Java 8中被删除,从2019年3月起,只有Java 12具有Oracle的免费更新,因此需要考虑在某些时候进行升级。