有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何计算保留堆大小和浅堆大小?

我是Java新手,我刚刚使用eclispe的MAT进行了堆转储分析。所以我只想说以下几点 a) 了解什么是浅层和保留堆大小,以及如何计算它?如果你能举个例子就好了。 b) 对于性能问题,大多数人建议我保持最小堆大小和最大堆大小相同,所以这是可以的还是取决于应用程序对应用程序的主观判断


共 (2) 个答案

  1. # 1 楼答案

    JVM大小调整和调优不是一门精确的科学,因此做出一个全面的决定,将最小和最大大小设置为相同的大小,并不一定是最好的配置选择

    我发现this是你需要做出的各种决定的极好解释。在回答你的问题时,它说:

    Setting -Xms and -Xmx to the same value increases predictability by removing the most important sizing decision from the virtual machine. However, the virtual machine is then unable to compensate if you make a poor choice.

    如果将“最小值”和“最大值”设置为相同,但Eden空间大小不合适,则垃圾收集性能可能仍然很差

    决定大小的唯一方法是在各种工作负载下运行应用程序,并查看GC的执行情况

  2. # 2 楼答案

    浅堆是一个object所消耗的内存。对象需要每个引用32或64位(取决于操作系统体系结构)、每个整数4字节、每个长8字节等。根据堆转储格式,可以调整大小

    保留堆的X是保留集X中所有对象的浅层大小之和,即X保持活动的内存

    请参阅this链接