这适用于所有 Java 堆/GC 专家。简单而直接的问题:对于可以将 Java 堆大小设置为的最大数字是否有硬性限制?
我正在使用的服务器之一是托管内存中实时通信系统,使用该服务器的客户端要求我将内存量增加到 192Gb(这不是错字:192 GigaBytes!)。从技术上讲,这是可能的,因为机器是虚拟的。
除了上面的一个,我的其他问题是:
- JVM 将如何处理这样的大小?
- 设置它有什么亮点吗?
- 在处理这种尺寸时,我应该注意什么?
提前感谢任何愿意提供帮助的人。
问候。
这适用于所有 Java 堆/GC 专家。简单而直接的问题:对于可以将 Java 堆大小设置为的最大数字是否有硬性限制?
我正在使用的服务器之一是托管内存中实时通信系统,使用该服务器的客户端要求我将内存量增加到 192Gb(这不是错字:192 GigaBytes!)。从技术上讲,这是可能的,因为机器是虚拟的。
除了上面的一个,我的其他问题是:
提前感谢任何愿意提供帮助的人。
问候。
1) 让他们考虑让虚拟机用他们的代码在磁盘上交换内存和交换内存的影响。有时它也一样好,不需要额外的工作让虚拟机来做。有时,当他们了解数据特征并且以这种方式进行优化时,速度会更快。
2) 考虑可能使用多个 JVM 协作或并行运行,并以某种方式划分操作范围。有时甚至在同一个 VM 上运行 4 个 JVM,每个 JVM 使用 1/4 的内存来运行相同的应用程序会更好。(取决于您的应用程序的特性。)
3) 考虑一个内存管理框架,比如 TerraCotta 的 Big Memory。这个领域有竞争对手。例如,VMWare 具有弹性内存。他们使用 JVM 堆外的内存来存储东西并避免 GC 问题。或者他们分配非常大的堆对象并独立于 Java 对其进行管理。
4) 如果内存被活动对象占用并且它们最终移动到老一代进行垃圾收集,JVM 就可以了。GC 可能是个问题。这是一门黑色艺术。在尝试优化 GC 之前,请务必杀死一只鸡并将羽毛散布在虚拟机上。:) 哦......这里有一些非常有趣的评论:Java 非常大的堆大小
5) 有时您设置的 JVM 大小和其他无法控制的因素会阻止它增长到那么大。请务必进行一些测试,以确保它确实能够增长到您设置的大小。
数字 5 是真正的关键项目。测试。测试。并进行更多测试。你在探索领域的边缘。