Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.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 如何将JVM配置为仅在确实需要时分配内存?_Java_Memory Management_Jvm_Jvm Arguments - Fatal编程技术网

Java 如何将JVM配置为仅在确实需要时分配内存?

Java 如何将JVM配置为仅在确实需要时分配内存?,java,memory-management,jvm,jvm-arguments,Java,Memory Management,Jvm,Jvm Arguments,我有一个应用程序,当我使用jvm命令-Xmx65m时可以执行。虽然运行良好,但我希望允许应用程序消耗更多内存,因为它有一些需要的特性。问题是,如果我增加-Xmx选项,JVM将分配更多内存来运行仅需65MB即可处理的功能 是否可以将JVM配置为仅在选项用尽且即将抛出OutOfMemoryError时向SO请求更多内存?JVM在启动时将最大堆大小保留为虚拟内存,但它只使用所需的内存量(即使设置了最小大小,也可能不会使用那么多)如果它使用了大量内存,但不再需要它,它可以返回给操作系统(但通常不需要)

我有一个应用程序,当我使用jvm命令
-Xmx65m
时可以执行。虽然运行良好,但我希望允许应用程序消耗更多内存,因为它有一些需要的特性。问题是,如果我增加
-Xmx
选项,JVM将分配更多内存来运行仅需65MB即可处理的功能


是否可以将JVM配置为仅在选项用尽且即将抛出OutOfMemoryError时向SO请求更多内存?

JVM在启动时将最大堆大小保留为虚拟内存,但它只使用所需的内存量(即使设置了最小大小,也可能不会使用那么多)如果它使用了大量内存,但不再需要它,它可以返回给操作系统(但通常不需要)


也许你没有看到一个逐渐增加,因为你的最大值是如此之小。尝试使用最大值
-mx1g
并在
jvisualvm
中查看最大堆大小是如何增长的。

JVM在启动时将最大堆大小保留为虚拟内存,但它只使用它所需的数量(即使您设置了最小大小,也可能不会使用那么多)如果它使用了大量内存,但不再需要它,它可以返回给操作系统(但通常不需要)


也许你没有看到一个逐渐增加,因为你的最大值是如此之小。尝试使用最大值
-mx1g
并在
jvisualvm
中查看最大堆大小是如何增长的。

请添加最小、最大内存设置。这样JVM就可以从最小所需内存开始,并在需要时不断分配更多内存

-Xms65m-Xmx512m


希望这有帮助。

请添加最小和最大内存设置。这样JVM就可以从最小所需内存开始,并在需要时不断分配更多内存

-Xms65m-Xmx512m

希望这有帮助

是否可以将JVM配置为仅在选项用尽且即将抛出OutOfMemoryError时向SO请求更多内存

随着JVM接近最终耗尽空间,它运行GC的频率越来越高,应用程序吞吐量(以每CPU每秒完成的有用工作计算)急剧下降。如果你能避免的话,你不希望发生这种事

有一个GC调优选项可用于阻止JVM增加堆。
-XX:MinHeapFreeRatio
选项设置“GC后堆空闲的最小百分比,以避免扩展”。如果您将此值从默认值40%减少到(比如)20%,那么GC将不那么急于扩展堆

不利的一面是,如果减少
-XX:MinHeapFreeRatio
,JVM作为一个整体将花费更大比例的时间运行垃圾收集器。如果走得太远,后果可能相当严重。(就个人而言,我根本不建议更改此设置…)

是否可以将JVM配置为仅在选项用尽且即将抛出OutOfMemoryError时向SO请求更多内存

随着JVM接近最终耗尽空间,它运行GC的频率越来越高,应用程序吞吐量(以每CPU每秒完成的有用工作计算)急剧下降。如果你能避免的话,你不希望发生这种事

有一个GC调优选项可用于阻止JVM增加堆。
-XX:MinHeapFreeRatio
选项设置“GC后堆空闲的最小百分比,以避免扩展”。如果您将此值从默认值40%减少到(比如)20%,那么GC将不那么急于扩展堆


不利的一面是,如果减少
-XX:MinHeapFreeRatio
,JVM作为一个整体将花费更大比例的时间运行垃圾收集器。如果走得太远,后果可能相当严重。(就个人而言,我不建议更改此设置…

您能解释一下它与JVM当前的工作有什么不同吗?“是否可以将JVM配置为只向SO请求更多内存,而仅当它没有选项并且即将抛出OutOfMemoryError时?”基本上,不。但这就是
Xms
选项的用途。您能解释一下它与JVM当前的工作有什么不同吗?“是否可以将JVM配置为只向SO请求更多内存,而仅当它没有选项并且即将抛出OutOfMemoryError时?”基本上,没有。但这就是
Xms
选项的用途。