在运行时内存配置

时间:2013-09-17 08:52:06

标签: java

我感兴趣的是有没有办法动态增加或缩小允许Java占用的内存?我知道这通常是在应用程序启动时完成的,但在生产时间看到它会非常酷。

2 个答案:

答案 0 :(得分:3)

JVM已经这样做了。它根据使用情况调整堆大小,并可以将内存返回给操作系统(尽管并非总是如此)

你无法改变的是最大值。您无法更改它的原因是它在启动时将此虚拟内存保留为单个连续块,这意味着它无法缩小或增长它。

给出最大值就是这样,我建议设置一个高值,你宁愿JVm失败而不是分配更多的内存。在这种情况下,调整此恕我直言是没有意义的。

BTW我不建议设置最小大小,除非您非常了解工作负载和应用程序的使用情况(以及将来)。通常为基准测试设置最小值,已知负载和应用程序版本,但对于负载变化和代码随时间变化的应用程序而言,这并不是一个好主意。

答案 1 :(得分:1)

我认为这高度依赖于您使用的JVM。对于Oracle的参考实现(OpenJDK / HotSpot),我认为不可能,初始值是固定的。

但是还有其他JVM实现,例如我知道IBM有一个自己的JVM,在这方面可能表现不同。我建议仔细研究JVM文档。