java - 为什么默认的最大堆大小这么小
问题描述
根据oracle 对 java 8 的人体工程学(对于 java 5 及更高版本也是如此),堆在最低的 1Gb 或总物理内存的 1/4 处达到最大值。这是为什么?
我有一个有状态的 Web 服务器,它每天处理来自 1000 多个用户的请求,该服务器在仅启动此应用程序的 VM 上运行。由于遗留原因,此 Web 服务器必须保持有状态,并且 HttpSessions 中保存的对象可能会占用大量内存。因此,1GB 还远远不够。
现代 Web 服务器真的不应该使用超过 1GB 的堆吗?为什么不能使用机器内存的 3/4?
解决方案
堆的最大值为 1Gb 或总物理内存的 1/4 中的最低值。这是为什么?
因为在现代机器上发现 64MB 太少了。
现代 Web 服务器真的不应该使用超过 1GB 的堆吗?
没有理由将通用可执行文件的默认值视为对 Web 服务器的最佳实践有很多话要说。
为什么不能使用机器内存的 3/4?
假设是 java 不是机器上的唯一进程。如果它是机器上最重要的进程并且需要更多内存,用户可以更改默认值。
推荐阅读
- python - 更新 Heroku 上的 Python setuptools
- office365 - 如何将我的订阅 office 365 business basic 连接到 Editor ADSI?
- node.js - 升级到 AnonymousTraversalSource (Gremlin 3.3.5+ Node.js)
- reactjs - 上传到 firebase:TypeError:uploadTask.on 不是函数
- javascript - 通过 UIKit 模式向数组添加元素在 vuejs 中不起作用
- scala - 执行捕获变量的嵌套函数分配
- kotlin - Kotlin 泛型类型不匹配
- kubernetes - 如何设置 Kubernetes 以支持动态添加的子域?
- excel - 交叉引用具有工作表编号的单元格
- elasticsearch - 查找日志文件的 grok 模式