Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java堆大小-不带AdaptiveSizePolicy的年轻代大小_Java_Garbage Collection_Heap Memory - Fatal编程技术网

Java堆大小-不带AdaptiveSizePolicy的年轻代大小

Java堆大小-不带AdaptiveSizePolicy的年轻代大小,java,garbage-collection,heap-memory,Java,Garbage Collection,Heap Memory,今天,我在调整java堆大小时注意到一个奇怪的行为。作为衡量年轻一代的参数,我选择: -XX:NewSize=2100M -XX:MaxNewSize=2100M 此外,我还通过以下方式关闭了AdaptiveSizePolicy: -XX:-UseAdaptiveSizePolicy 根据这三个参数,我的年轻一代应该是2100米。但是当我查看gc日志时,它的大小只有1900 MB(约89%)。当尝试不同的尺寸时,日志中的年轻一代大约占相同的百分比(~89%) 整个堆是5GB。在日志文件中,整

今天,我在调整java堆大小时注意到一个奇怪的行为。作为衡量年轻一代的参数,我选择:

-XX:NewSize=2100M
-XX:MaxNewSize=2100M
此外,我还通过以下方式关闭了AdaptiveSizePolicy:

-XX:-UseAdaptiveSizePolicy
根据这三个参数,我的年轻一代应该是2100米。但是当我查看gc日志时,它的大小只有1900 MB(约89%)。当尝试不同的尺寸时,日志中的年轻一代大约占相同的百分比(~89%)

整个堆是5GB。在日志文件中,整个堆的大小很好(~4,97 GB)。我使用的收集器是年轻一代的PSYoungGen和老一代的ParallelOldGC


有人能简单地解释一下为什么年轻一代的规模比它应该的要小吗?

有没有可能你只关注伊甸园空间而不是整个年轻一代

-XX:NewSize控件“”这不仅仅是“伊甸园空间”,它还用于管理两个“幸存者空间”。它们之间的比率可以使用-XX:SurvivorRatio来控制

例如,我在安装了visualGC插件的情况下使用visualVM来检查一个java进程,该进程使用以下VM参数运行-XX:NewSize=256M和-XX:survivoratio=4

我的伊甸园空间是170.750米 我的幸存者0是42.625米 我的幸存者1是42.625米


170.750+42.625+42.625=256M

你能发布gc日志吗?谢谢你的回答。也许你是对的,听起来合乎逻辑。但是当我有一个类似“39.910:[GC 39.910:[ParNew:261760K->0K(261952K),0.2314667秒]262017K->26386K(1048384K),0.2318679秒]”的日志文件行时,我认为括号中的“261952K”是整个年轻一代的大小(伊甸园+2个幸存者空间)。在我的日志文件中,该值与配置的值不同,例如,我配置了-XX:NewSize=2500M,日志文件显示我的年轻一代为2225M(~89%)