如何启动无限内存的JVM?

Zol*_*sek 5 java memory jvm

如何启动没有堆最大内存限制的JVM?这样它可以占用尽可能多的内存吗?

我搜索了是否有这样的选项,但我似乎只找到-Xmx和-Xms选项.

编辑:

假设我有一台4GB RAM的服务器,它只运行我的应用程序.而且,假设我有另一台32GB RAM的服务器.我不想以4GB的内存限制启动我的应用程序,因为第二台机器应该能够处理更多的对象

the*_*472 21

-XX:MaxRAMFraction=1将自动配置最大堆大小为物理RAM的100%或cgroups UseCGroupMemoryLimitForHeap设置的限制(如果已设置).

OpenJDK 10还将支持基于百分比的选项,MaxRAMPercentage允许更细粒度的选择JDK-8186248.为非堆数据结构留出一些备用容量以避免交换非常重要.


Mar*_*eel 6

你不能(或者至少,我不知道支持它的JVM实现).JVM需要在启动时知道它可以分配多少内存,以确保它可以在虚拟内存中保留连续的范围.这允许 - 以及其他 - 用于在存储器管理中更简单的推理.

如果虚拟内存在运行时将被扩大,这可能会导致零碎的虚拟内存的范围,使得跟踪和引用内存更难.