Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.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_Jvm - Fatal编程技术网

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

Java 指示JVM像正常进程一样使用内存?,java,jvm,Java,Jvm,我对必须猜测-Xmx命令行选项的一个好值、让我的应用程序因OutOfMemoryException而崩溃、不得不修改-Xmx值以及不得不一直重新启动我的应用程序感到厌倦和厌恶 有没有一种方法可以让JVM正常运行,这样它就不需要-Xmx选项,并且可以像任何普通应用程序一样直接从操作系统分配和释放内存?当对象被释放时,是否有更高效、更积极地将内存返回操作系统的GC 如果我没记错的话,Java源于嵌入式环境,但在过去很长一段时间里,它已经变得越来越流行,并传播到各种系统中。在21世纪一定有办法做到这一

我对必须猜测
-Xmx
命令行选项的一个好值、让我的应用程序因
OutOfMemoryException
而崩溃、不得不修改
-Xmx
值以及不得不一直重新启动我的应用程序感到厌倦和厌恶

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

如果我没记错的话,Java源于嵌入式环境,但在过去很长一段时间里,它已经变得越来越流行,并传播到各种系统中。在21世纪一定有办法做到这一点吗?在许多使用案例中,应用程序可能需要从几千字节到几千兆字节的内存,而繁琐的
-Xmx
真的成为了阻碍

(自我提醒:因为没有好的答案,所以反复尝试其他GC-s和随机命令行选项)

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

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

当对象被释放时,是否有更高效、更积极地将内存返回操作系统的GC

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

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

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

笨重的-Xmx真的很碍事

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

因为没有好的答案,所以以cargo cult的方式反复尝试其他一些GC-s和随机命令行选项

另一种方法是了解地面军事系统是如何工作的,它们的性能权衡是什么,以及这些不同的参数如何影响它们,然后根据这些信息而不是随机选择它们

在这个问题上有很多问题

当然,你仍然可以使用SO答案作为起点,找到可能会产生你想要的结果的选项,但没有什么可以阻止你研究它们为什么会达到这些结果


不需要崇拜飞机。

好的。不要指定
-Xmx
(或
-Xms
)参数。@ElliottFrisch,但JVM没有默认的
-Xmx
值集吗?@ElliottFrisch,但它不会在运行时将内存释放回操作系统?我建议您对此进行修改。使用支持您的用例的其他VM。(Azul浮现在脑海中)您可能想要使用jdk9 ea构建,因为他们有一个gc来提供您所要求的内容。否。Java有它的“根”,它最初是为。公开发布时,流行的用例包括小应用程序(但我正在使用与小应用程序无关的公共测试版开发AWT应用程序)。这很公平,但维基百科条目中包含了这句话。他们的第一次尝试于1992年9月3日演示,重点是构建名为Star7的PDA设备[1]它有一个图形界面和一个叫做“杜克”的智能代理来帮助用户。1992年的PDA将构成一个嵌入式系统(对我来说)。@ElliottFrisch当他们发布Java微型版时,Java标准版显然不是针对嵌入式系统的。很多人在谈论Java时都会想到JSE。