java堆大小的硬限制
所有的Java堆/GC专家都会这样做。 简单而直接的问题:对于可以设置Java堆大小的最大值是否有硬限制 我正在使用的服务器之一是内存实时通信系统,使用该服务器的客户端要求我将内存量增加到192Gb(这不是打字错误:192Gb!)。从技术上讲,这是可能的,因为机器是虚拟的 除上述问题外,我还有其他问题:java堆大小的硬限制,java,garbage-collection,limit,heap-memory,Java,Garbage Collection,Limit,Heap Memory,所有的Java堆/GC专家都会这样做。 简单而直接的问题:对于可以设置Java堆大小的最大值是否有硬限制 我正在使用的服务器之一是内存实时通信系统,使用该服务器的客户端要求我将内存量增加到192Gb(这不是打字错误:192Gb!)。从技术上讲,这是可能的,因为机器是虚拟的 除上述问题外,我还有其他问题: JVM处理这种大小的能力如何 在设置它时有什么阻碍吗 在处理这样的尺寸时,有什么我应该注意的吗 提前感谢任何愿意帮助的人 他们考虑了虚拟机把内存中的东西交换到磁盘上的含义,代码是用代码来完成
- JVM处理这种大小的能力如何
- 在设置它时有什么阻碍吗
- 在处理这样的尺寸时,有什么我应该注意的吗
2)考虑可能使用多个JVM,无论是合作还是运行,都与操作范围分开。有时,即使在同一个VM上运行4个JVM,并且每个JVM都使用1/4的内存,也会更好。(取决于应用程序的特征。)
3)考虑一个内存管理框架,比如TerraCotta的大内存。在这个领域有竞争对手。例如,VMWare具有弹性内存。它们使用JVM堆外的内存来存储内容,并避免GC问题。或者,它们分配非常大的堆对象,并独立于Java进行管理
4) 如果内存被活动对象占用,并且最终移动到较旧的一代进行垃圾收集,JVM会正常(TM)。GC可能是一个问题。这是一种黑人艺术。在尝试优化GC之前,请确保杀死一只鸡并将羽毛覆盖在虚拟机上。:)哦这里有一些非常有趣的评论: 5) 有时,您设置JVM大小,其他超出您控制范围的因素将阻止JVM增长到如此之大。一定要做一些测试,以确保它确实能够增长到您设置的大小 第五项才是真正的关键。测试。测试。再测试一些。您正处于勘探区域的边缘。这并不表示存在硬限制 因此,我建议由您的操作系统和可用内存量来管理。 但是,您必须意识到JVM需要足够的内存来存储其他内部结构(如SPEC描述的),如PyMGEN、常量池等。我还建议您在任意增加堆大小之前考虑分析。有可能是您的旧gen空间占用了内存。我会使用VisualGC(现在在中)来观察内存使用情况并查找泄漏(它的代际功能是一个真正的帮助)我没有回答您的其他问题,但可能无法比其他回答者说得更多。如果您有一个测试系统,需要一个程序来获取堆大小,我可以帮助您。我很想知道结果。谢谢。你说的“抓取堆大小”是什么意思?我不确定我是否能帮上忙,但在任何情况下,为了让其他人参与进来,你在使用哪个操作系统和哪个JVM?使用它,这样你就知道是否有硬限制。第一个里程碑是启动jvm。我想你需要使用其他的-X设置