相关疑难解决方法(0)

在运行时设置JVM堆大小

有没有办法从正在运行的Java程序中设置堆大小?

java heap jvm runtime

60
推荐指数
3
解决办法
5万
查看次数

为什么(Sun)JVM具有固定的内存使用上限(-Xmx)?

本着Java的问题:为什么MaxPermSize存在?,我想问一下为什么Sun JVM对其内存分配池的大小使用固定的上限.

默认值是物理RAM的1/4(上限和下限); 因此,如果您有一个需要内存的应用程序,您必须手动更改限制(参数-Xmx),否则您的应用程序将表现不佳,甚至可能会因OutOfMemoryError崩溃.

为什么这个固定限制甚至存在?为什么JVM不会根据需要分配内存,就像本机程序在大多数操作系统上一样?

这将解决Java软件的一大类常见问题(只需谷歌通过设置-Xmx来查看解决问题的网上有多少提示).

编辑:

一些答案指出,这将保护系统的其余部分免受Java程序的影响而导致内存泄漏; 没有限制,这会耗尽整个系统耗尽所有内存.这是事实,但对于任何其他程序同样如此,现代操作系统已经允许您限制程序的最大内存(Linux ulimit,Windows"作业对象").所以这并没有真正回答这个问题,即"为什么JVM与大多数其他程序/运行时环境不同?".

java memory jvm

45
推荐指数
3
解决办法
9914
查看次数

如何以编程方式增加Java堆大小

我有一个用于搜索文件的java桌面应用程序,它通常很快就会达到默认的堆限制.我无法访问将要安装的所有系统,因此我想在应用程序本身中增加JVM堆大小.任何人都可以帮助我如何在我的应用程序中以编程方式执行此操作

java heap size

10
推荐指数
3
解决办法
1万
查看次数

是否可以动态更改最大Java堆大小?

我知道您可以使用-Xmx在启动时设置最大堆大小,但是可以在运行时动态更改它吗?

是否有任何工具或(未记录的)API可以让我这样做?

java heap

5
推荐指数
1
解决办法
1224
查看次数

标签 统计

java ×4

heap ×3

jvm ×2

memory ×1

runtime ×1

size ×1