指示 JVM 像正常进程一样使用内存?
Instructing JVM to use memory like normal processes do?
我完全厌倦了不得不为 -Xmx
命令行选项猜测一个好的值,让我的应用程序因 OutOfMemoryException
而崩溃,不得不修改 [=10] =] 值并且必须一直重新启动我的应用程序。
有没有办法让 JVM 正常运行,这样它就不需要 -Xmx
选项,并且会直接从 OS 就像任何普通应用程序一样?是否有一些 GC 效率更高,在释放对象时主动将内存返回给 OS?
如果我没记错的话,Java 起源于嵌入式环境,但早已流行起来并传播到各种系统。在 21 世纪肯定有办法做到这一点?在许多用例中,一个应用程序可能需要几千字节到几太字节的内存,而繁琐的 -Xmx
确实是阻碍。
(自我提醒:由于没有好的答案,请以 方式反复尝试其他一些 GC-s 和随机命令行选项)
Is there a way to make JVM act normal so that it wouldn't require a -Xmx option, and would allocate and free memory directly from the OS just as any normal application would?
默认情况下就是这样。您只需要设置最大堆大小以指示在什么时候您宁愿出现错误也不愿使用更多内存。
Is there some GC which is more efficient, aggressively returning memory to the OS when objects are freed?
我相信 Oracle JVM 中的 G1 收集器在这方面做得更好(因为它较新 ??)
If I remember correctly, Java has its roots in embedded environments,
它的根源是 Java 小程序。 J2ME 用于嵌入式系统,这是一个不同的版本和代码库。
the cumbersome -Xmx is really getting in the way.
我一般不会自己设置。当您有 128 GB 或更多时,它默认为 32 GB。
Since there are no good answers iteratively try out some other GC-s and random command line options in cargo cult fashion
另一种方法是了解 GC 的工作原理、它们的性能折衷以及这些不同的参数如何影响它们,然后根据这些信息而不是随机选择它们。
关于该主题有 extensive documentation。
当然,您仍然可以使用 SO 答案作为起点来找到可能会导致您想要的结果的选项,但是没有什么能阻止您继续研究 why 他们实现了这些结果。
不用崇拜位面
我完全厌倦了不得不为 -Xmx
命令行选项猜测一个好的值,让我的应用程序因 OutOfMemoryException
而崩溃,不得不修改 [=10] =] 值并且必须一直重新启动我的应用程序。
有没有办法让 JVM 正常运行,这样它就不需要 -Xmx
选项,并且会直接从 OS 就像任何普通应用程序一样?是否有一些 GC 效率更高,在释放对象时主动将内存返回给 OS?
如果我没记错的话,Java 起源于嵌入式环境,但早已流行起来并传播到各种系统。在 21 世纪肯定有办法做到这一点?在许多用例中,一个应用程序可能需要几千字节到几太字节的内存,而繁琐的 -Xmx
确实是阻碍。
(自我提醒:由于没有好的答案,请以
Is there a way to make JVM act normal so that it wouldn't require a -Xmx option, and would allocate and free memory directly from the OS just as any normal application would?
默认情况下就是这样。您只需要设置最大堆大小以指示在什么时候您宁愿出现错误也不愿使用更多内存。
Is there some GC which is more efficient, aggressively returning memory to the OS when objects are freed?
我相信 Oracle JVM 中的 G1 收集器在这方面做得更好(因为它较新 ??)
If I remember correctly, Java has its roots in embedded environments,
它的根源是 Java 小程序。 J2ME 用于嵌入式系统,这是一个不同的版本和代码库。
the cumbersome -Xmx is really getting in the way.
我一般不会自己设置。当您有 128 GB 或更多时,它默认为 32 GB。
Since there are no good answers iteratively try out some other GC-s and random command line options in cargo cult fashion
另一种方法是了解 GC 的工作原理、它们的性能折衷以及这些不同的参数如何影响它们,然后根据这些信息而不是随机选择它们。
关于该主题有 extensive documentation。
当然,您仍然可以使用 SO 答案作为起点来找到可能会导致您想要的结果的选项,但是没有什么能阻止您继续研究 why 他们实现了这些结果。
不用崇拜位面