我的应用程序包含 80 个不同类的大约 80 个实例。这些类的某些子集生成的垃圾量是不可接受的,并且停止世界的暂停时间太长,因为我的应用程序是实时的。
我想找到的是哪些类负责创建最大的number堆上对象的数量(不是聚合大小,而是对象的原始数量),因为这就是导致 stop the world 暂停花费这么长时间的原因。
我怎样才能找到这个?
如果需要 JVisualVM,我有这个。
查看每个类的对象数量的一种非常轻量级的方法是类直方图.
只需通过以下方式生成类直方图jmap -histo <PID>
.
Use -XX:+PrintClassHistogramBeforeFullGC
, -XX:+PrintClassHistogramAfterFullGC
当发生停止世界暂停时查看类直方图。您可以比较之前/之后的快照,以查看在停止世界暂停期间收集了哪些类实例。
查看更多详细信息分析每个类的垃圾收集对象实例的数量 https://stackoverflow.com/q/8126868/772000.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)