java如何计算保留堆大小和浅堆大小?
我是Java新手,我刚刚使用eclispe的MAT进行了堆转储分析。所以我只想说以下几点 a) 了解什么是浅层和保留堆大小,以及如何计算它?如果你能举个例子就好了。 b) 对于性能问题,大多数人建议我保持最小堆大小和最大堆大小相同,所以这是可以的还是取决于应用程序对应用程序的主观判断
你可以在下面搜索框中键入要查询的问题!
我是Java新手,我刚刚使用eclispe的MAT进行了堆转储分析。所以我只想说以下几点 a) 了解什么是浅层和保留堆大小,以及如何计算它?如果你能举个例子就好了。 b) 对于性能问题,大多数人建议我保持最小堆大小和最大堆大小相同,所以这是可以的还是取决于应用程序对应用程序的主观判断
# 1 楼答案
JVM大小调整和调优不是一门精确的科学,因此做出一个全面的决定,将最小和最大大小设置为相同的大小,并不一定是最好的配置选择
我发现this是你需要做出的各种决定的极好解释。在回答你的问题时,它说:
如果将“最小值”和“最大值”设置为相同,但Eden空间大小不合适,则垃圾收集性能可能仍然很差
决定大小的唯一方法是在各种工作负载下运行应用程序,并查看GC的执行情况
# 2 楼答案
浅堆是一个
object
所消耗的内存。对象需要每个引用32或64位(取决于操作系统体系结构)、每个整数4字节、每个长8字节等。根据堆转储格式,可以调整大小保留堆的X是保留集X中所有对象的浅层大小之和,即X保持活动的内存
请参阅this链接