如何检查仍然使用的线程或对象?

问题描述 投票:1回答:1

任何人都可以告诉我如何看到哪些活动/线程保持活动状态并且我的应用程序不再调用它们?

例如,如果我打开HTTP流然后不刷新,但继续打开新的,则使用的内存将继续上升,直到GC通过清理。是否有可能以某种方式查看哪些线程或对象已生成并且在给定时间x内未使用?

这种请求的原因是由于服务器部署了服务器,这继续增加内存,直到达到限制,因此GC被迫干预以重新建立稳定的内存情况。

我不知道它是否对此分析有帮助,但gcc参数设置为:

-Xms8g -Xmx8g -XX:PermSize = 1024 XX:MaxPermSize = 1024

机器的公羊是18克。

感谢所有提前

java garbage-collection jvm
1个回答
0
投票

要检查对象是否仍在使用,请执行完整GC。这个行动没有捷径可走。

在执行垃圾收集之前,您不知道是否需要对象。

使用的内存将继续上升,直到GC通过清理。

这在JVM中是正常的。为了提高性能,您希望重用昂贵的对象,而不必过于担心廉价对象。您还需要调整GC,以便在运行时,它不会过多地影响您的应用程序。

注意:Perm Gen在Java 8中被删除,从2019年3月起,只有Java 12具有Oracle的免费更新,因此需要考虑在某些时候进行升级。

© www.soinside.com 2019 - 2024. All rights reserved.