为什么默认的最大堆大小这么小

Why is the deafult maximum heap size so small

根据 oracle's ergonomics for java 8 (对于 java 5 及以后也是如此)堆的最大值为 1Gb 或总物理内存的 1/4 中的最低值。这是为什么?

我有一个全状态 Web 服务器,它每天处理来自 1000 多个用户的请求,该服务器在仅启动此应用程序的 VM 上运行。由于遗留原因,此 Web 服务器必须保持有状态,并且 HttpSessions 中保存的对象可能会占用大量内存。因此,1GB 是远远不够的。

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

The heap is maxed at the lowest of either 1Gb or 1/4th of the total physical memory. Why is that?

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

Should modern web servers really never use more than 1GB of heap?

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

Why should 3/4 of the machine's memory not be used?

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