Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.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
JavaG1垃圾收集器是否尊重MaxHeapFreeRatio参数?_Java_Garbage Collection_G1gc - Fatal编程技术网

JavaG1垃圾收集器是否尊重MaxHeapFreeRatio参数?

JavaG1垃圾收集器是否尊重MaxHeapFreeRatio参数?,java,garbage-collection,g1gc,Java,Garbage Collection,G1gc,JavaG1垃圾收集器(在OpenJDK中实现)是否尊重-XX:MaxHeapFreeRatio=nJVM参数 它在Java8中尊重它吗 我发现它是用Java12交付的,但我不清楚它之前的状态是什么。我发现的一个非权威答案是基于 最值得注意的是,有些地面军事系统支持,有些则不支持。这个RFE没有说 使用哪个GC,所以我假设我们讨论的是默认GC 它支持MaxHeapFreeRatio。G1也支持此选项 要缩小堆(并释放内存),需要一个完整的GC。它是 应用程序不会手动触发完整GC,这可能需要一段时

JavaG1垃圾收集器(在OpenJDK中实现)是否尊重
-XX:MaxHeapFreeRatio=n
JVM参数

它在Java8中尊重它吗


我发现它是用Java12交付的,但我不清楚它之前的状态是什么。

我发现的一个非权威答案是基于

最值得注意的是,有些地面军事系统支持,有些则不支持。这个RFE没有说 使用哪个GC,所以我假设我们讨论的是默认GC 它支持MaxHeapFreeRatio。G1也支持此选项

要缩小堆(并释放内存),需要一个完整的GC。它是 应用程序不会手动触发完整GC,这可能需要一段时间 在JVM触发之前

所以答案是(对于Java8):是的。。。但是没有

  • 是的,它支持这个选项
  • 但只有当完全GC发生时,这可能永远不会发生

(我仍然好奇是否有更权威的源代码,以及在更现代的JVM中,当前的状态是什么)

我不知道比源代码更权威的答案,是的,您的答案是正确的-只有在完全GC之后(至少在JEP之前)才会释放内存

对于java-8:

这个论点很重要,听着

这段代码理解起来并不复杂,而且是实际发生的收缩

要获得更广泛的答案(关于java-11,但仍然符合java-8),请阅读


底线是——这个标志确实很重要,但具体如何依赖于实现。你的问题没有简单的答案。

所以你的问题只是在java-12之前,我想?@Eugene否,问题是针对java 8、11、13,只是答案可能因版本而异。如果有必要,我已经用大量参考资料更新了我的答案。但底线很简单:这个标志确实很重要,在何种程度上:取决于确切的VM版本,即提供给VM的初始标志。