为什么deafult最大堆大小如此之小

时间:2018-06-13 14:33:01

标签: java memory-management jvm jvm-arguments jvm-hotspot

根据oracle's ergonomics for java 8(对于java 5及更高版本也是如此)堆最大值为1Gb或总物理内存的1/4。那是为什么?

我有一个有状态的Web服务器,它每天处理来自1000个用户的请求,这些用户只能在启动此应用程序的VM上运行。由于遗留原因,此Web服务器必须保持状态,并且HttpSessions中保存的对象可能非常耗费内存。因此,1GB还不够。

现代Web服务器真的不会使用超过1GB的堆吗? 为什么不能使用3/4的机器内存?

1 个答案:

答案 0 :(得分:1)

  

堆最大值为1Gb或总物理内存的1/4。那是为什么?

因为在现代机器上发现64MB太少了。

  

现代Web服务器真的不会使用超过1GB的堆吗?

没有理由将通用可执行文件的默认值视为对Web服务器的最佳实践有很多话要说。

  

为什么不能使用3/4的机器内存?

假设java并不是机器上唯一的进程。如果它是机器上最重要的进程并需要更多内存,则用户可以更改默认值。