- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
谁能解释增加 maxpermsize 和 max heap size 的副作用?
我知道有时,当我们遇到内存不足问题时,我们会增加 -Xmx。但我只是想知道当我们增加 -Xmx 时是否需要记住任何副作用。以及增加 maxpermsize 对运行时有何影响?
谢谢。
最佳答案
简答
Java 堆大小加倍,垃圾收集暂停的等待时间加倍,在当前的 JVM 技术中,当堆为 Gb 顺序时,等待时间变为数秒。好像新发布的Java 7 is going to change that .
长答案
MaxPermSize 是永久代堆的最大大小,该堆保存类的字节码,并与包含实际实例的对象堆分开。对于 Web 应用程序要记住的一件事是,在每次热重新部署中,内存使用量会随着相同类的多个副本而增加。除非指定了 -XX:+CMSClassUnloadingEnabled。
最大堆大小 (-Xmx) 和 MaxPermSize 必须考虑到应用程序类和实例需要多少内存、服务器的总内存和其他所需的内存应用程序。
另一个重要的一点是,从 Min Heap Size (-Xms) 扩展内存是一项代价高昂的操作。尤其是在金融应用的情况下,这可能意味着延迟。对于类似的实时要求,最好将 -Xms 和 -Xmx 设置为相同的值。
以下谈话可能会引起您的兴趣http://www.infoq.com/presentations/Java-without-the-GC-Pauses
从演讲中您可以看出,将堆增加超过一定限制 2Gb、10Gb、100Gb 的副作用意味着垃圾收集的暂停时间更长,如果堆非常大,可能会停止一切几秒钟或一分钟.
由于当前 JVM 技术的原因,您希望将堆设置为足够大以运行您的应用程序,但又不能太大。一种找到正确大小的方法,可以将其设置为最大可能值,然后减半并继续减半直到发现问题,当你这样做时,将最后找到的值加倍并将其保持为所选堆大小用于生产。
这个建议当然适用于大堆,按 Gb 顺序,如果您的应用程序在 256Mb 内存下运行良好,我会保留该值而无需进一步调查。
最后,这里有一些示例设置供引用:
-Xms512m -Xmx512m -XX:MaxPermSize=256m -XX:+CMSClassUnloadingEnabled
关于java - 增加 maxpermsize 和最大堆大小的副作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6902135/
Getting this kind of error on linux server in my project when i run my spring-hibernate project i re
有什么区别 -Xms4096m -Xmx2048M -XX:MaxPermSize=712M 我对这两个 -Xmx2048M 和 -XX:MaxPermSize=712M 感到困惑 如果我使用 -Xm
为什么存在 MaxPermSize? 最佳答案 这里有一篇关于垃圾收集器中永久代的好文章: Presenting the Permanent Generation在 Jon Masamitsu's W
假设一个 64 位 JVM,保持 MaxPermSize 小有什么显着的好处吗? 这是在频繁重新部署的 Java EE 应用程序的上下文中,并且存在类加载器泄漏。作为一个中期解决方法,将 MaxPer
谁能解释增加 maxpermsize 和 max heap size 的副作用? 我知道有时,当我们遇到内存不足问题时,我们会增加 -Xmx。但我只是想知道当我们增加 -Xmx 时是否需要记住任何副作
具体来说,为什么它有助于解决 PermGen OutOfMemoryError 问题? 另外,如果答案指向我关于 JVM 参数的文档... 最佳答案 永久空间是虚拟机使用的类、方法、内部化字符串和类似
我已经下载了 Eclipse,但是当我单击 Eclipse 安装文件时,它没有运行。当我单击 eclipsec 文件时,它会显示以下消息: Javahotspot(TM) 64 bit server
我正在尝试在 Windows Tomcat 服务器上运行多个工具。服务器启动正常,也能看到Tomcat的管理器页面。但是当我打开一个工具时,出现“OutOfMemoryError: PermGen s
我遇到了可怕的PermGen:Out of memory在 TomCat 上部署 Web 应用程序时出错。我已经尝试了很多可能的解决方案,但都没有解决(有时有效,通常无效)。我想知道我在“BuildC
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Read Java JVM startup parameters (eg -Xmx) 我们有一个桌面应用程序
有人可以确认对于 32 位系统: 使用以下设置是否有任何缺点: -Xms1024m -Xmx1024m -XX:PermSize=768m -XX:MaxPermSize=768m (我们需要更高的
非服务器级机器上的 Java 6 中以下选项的默认值是什么? -Xmx -XX:MaxPermSize 甲骨文的documentation指出: On server-class machines ru
这个问题已经有答案了: Error java.lang.OutOfMemoryError: GC overhead limit exceeded (22 个回答) 已关闭 7 年前。 我正在使用 Ja
我有一个问题,Liferay IDE(在 Mac OS 上)没有在 tomcat 包文件夹 liferay-portal-6.2-ee-sp2/tomcat-7.0 的 setenv.sh 中获取 -
我正在尝试将我的应用程序部署到 Tomcat,但未能成功。我不断地得到 OutofMemoryError permgen 空间。我尝试了各种命令行开关(在 stackoverflow 上搜索了与此相关
我在 Ubuntu 16.04 服务器上安装 torquebox 时遇到了一个小问题。它自己的安装很简单,但是现在,当我想用“torquebox run”启动 torquebox 服务器时,我收到
如何从命令行检查 maxpermsize?获取错误 无法识别的 VM 选项。版本如下 D:\apps\Tomcat\bin>java -XX:+PrintFlagsFinal Unrecognized
我已经使用 tomcat 的 JAVA_OPTS 变量设置了 PermSize 和 MaxPermSize 的值,如下所示 JAVA_OPTS="$JAVA_OPTS -XX:PermSize=512
我们遇到了 Java.lang.OutOfMemoryError: PermGen space 错误并查看了除 -Xms 和 - 之外的 tomcat JVM 参数Xmx 参数我们还指定 -XX:Ma
我知道有数千个关于此错误的问题,但我还没有找到解决我的问题的方法。我在服务器中部署了三个 Web 应用程序。该应用程序是用java、spring框架和hibenate制作的。我的服务器有tomcat6
我是一名优秀的程序员,十分优秀!