指示JVM像正常进程一样使用内存



我完全受够了,讨厌不得不猜测-Xmx命令行选项的一个好值,讨厌我的应用程序与OutOfMemoryException崩溃,讨厌不得不修改-Xmx值,讨厌一直重新启动应用程序。

有没有一种方法可以让JVM正常运行,这样它就不需要-Xmx选项,并且可以像任何正常应用程序一样直接从操作系统分配和释放内存?有没有更高效的GC,在释放对象时积极地将内存返回到操作系统?

如果我没记错的话,Java起源于嵌入式环境,但早已流行起来,并传播到各种系统中。在21世纪,肯定有办法做到这一点吗?在许多用例中,应用程序可能需要从几千字节到几兆字节的内存,而繁琐的-Xmx确实阻碍了这一过程。

(提醒自己:由于没有好的答案,以货物狂热的方式反复尝试一些其他GC和随机命令行选项)

有没有一种方法可以让JVM正常运行,这样它就不需要-Xmx选项,并且可以像任何正常应用程序一样直接从操作系统分配和释放内存?

默认情况下就是这样。您只需要设置最大堆大小,就可以指示您希望它在什么时候出现错误,而不是使用更多内存。

有没有更高效的GC,在释放对象时积极地将内存返回到操作系统?

我相信Oracle JVM中的G1收集器在这方面做得更好(因为它更新了??)

如果我没记错的话,Java源于嵌入式环境,

它的根在Java小程序中。J2ME用于嵌入式系统,这是一个不同的版本和代码库。

笨重的-Xmx真的很麻烦。

我通常不会自己设定。当您拥有128 GB或更多时,它默认为32 GB。

由于没有好的答案,反复尝试一些其他GC和随机命令行选项,以货物狂热的方式

另一种方法是学习GC是如何工作的,它们的性能权衡是什么,以及这些不同的参数如何影响它们,然后根据这些信息而不是随机选择它们。

关于这个主题有大量的文件。

当然,你仍然可以用SO答案作为起点来寻找可能导致你想要的结果的选项,但没有什么可以阻止你去研究为什么他们会达到这些结果。

没有必要崇拜飞机。

相关内容

最新更新