谁能解释增加maxpermsize和max堆大小的副作用?
我知道有时遇到内存不足问题时,我们会增加-Xmx。但是我只是想知道在增加-Xmx时是否需要记住任何副作用。增大maxpermsize会如何影响运行时间?
谢谢。
简短答案
将Java堆大小加倍,会使垃圾收集暂停的等待时间增加一倍,而当堆按Gb顺序使用当前的JVM技术时,该等待时间将变为数秒。看来新发布的Java7将改变这种状况。
长答案
该 MaxPermSize参数
是为永久生成堆的最大大小,保持类的字节代码和从包含实际实例对象堆被保持分离的堆。对于Web应用程序,要记住的一件事是,在每次热重新部署中,随着相同类的多个副本,此内存使用量将增加。除非指定了-
XX:+ CMSClassUnloadingEnabled。
*必须设置 *最大堆大小
(-Xmx)和MaxPermSize,这要考虑到应用程序类和实例需要多少内存,服务器的总内存以及其他应用程序需要的内存。
另一个重要的一点是,从 最小堆大小
(-Xms)扩展内存是一项昂贵的操作。特别是在财务应用程序的情况下,这可能意味着延迟。对于类似的实时要求,将-Xms和-Xmx设置为相同的值可能是个好主意。
以下演讲可能引起您的兴趣http://www.infoq.com/presentations/Java-without-the-GC-
Pauses
从谈话中可以看出,增加堆超过特定限制2Gb,10Gb,100Gb的副作用意味着更长的Garbage
Collection暂停时间,如果堆很大,则可能停止几秒钟或一分钟。
因此,对于当前的JVM技术,您希望将堆设置为足够大以运行您的应用程序,但又不要太大。找到正确大小的一种方法是,将其设置为尽可能大的值,然后将其切成两半,并继续切成两半,直到发现问题为止,这样做时,将最后找到的值加倍,并保持为选定的堆大小用于生产。
当然,此建议适用于以Gb为单位的大堆,如果您的应用程序在256Mb内存下运行良好,那么我将保留该值,而无需进一步研究。
最后供参考的是一些示例设置:
-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled
这与其他关于Node中错误消息的问题不同,错误消息中写着RangeError:超出最大调用堆栈大小,因为我确切地知道为什么会收到这条错误消息。它的发生是因为我在递归,事实上递归了很多次。 谢谢。
嗨,我正在android应用程序中执行动画。运行时,我的应用程序崩溃,并获得OutOfMemoryException。错误为,java.lang.OutOfMemoryError:在OOM之前无法分配具有3044192个空闲字节和2MB的9437196字节分配 我试图在我的Manifeant文件中添加largeheap=true语句,但这不是正确的解决方案。所以,请帮助我解决以上问题。谢谢你。
问题内容: 我正在使用具有8 GB RAM的Windows 2003服务器(64位)。如何增加堆内存的最大值?我正在使用该标志将堆大小增加到1500 Mb。是否可以将堆内存增加到物理内存(6 GB堆)的75%? 问题答案: 你可以在32位系统上增加到4GB。如果你使用的是64位系统,则可以更高。如果你选择的错误,不用担心,如果你在32位系统上要求5g,则Java会抱怨一个无效的值并退出。 正如其他
问题内容: 这与有关Node中读取 RangeError 的错误消息的其他问题不同 :超出最大调用堆栈大小的 原因是我确切知道为什么收到此错误消息。之所以会这样,是因为我要递归,实际上递归很多。 谢谢。 问题答案: 来自: 更新:如注释所示,即使帮助文本仍列出了该选项,您也需要在节点v0.10.x中使用它。
我有一个WordPress网络站点(目前只有一个页面)。最大的问题是,WordPress中媒体的最大上传大小限制为1MB。 我增加这一限制的任何尝试都没有成功。 到目前为止,我所尝试的: 增加upload_max_filesize和post_max_size 服务器重新加载php。ini在特定时间段内自动生成。通过运行phpinfo(),php确认了该更改。 WordPress插件(Revo Sl
问题内容: 有没有办法我可以在自己的计算机上为jvm设置默认堆大小?我想将其设置为1g,因为我一直在运行自定义程序,这些程序始终会达到默认jvm大小的超额点。 我只是不想记住每次我从命令行运行Java应用程序时都要键入-XmX1g … 必须有一种管理方式来做到这一点吗? 问题答案: 显然,它也可以在Linux上运行: