jvm调优

本文详细介绍了JVM的各种参数及其作用,如-server、-Xms、-Xmx、-XX:PermSize、-XX:MaxPermSize等,强调了合理设置这些参数以避免内存溢出问题。通过实例展示了在不同场景下如何调整JVM内存配置,如在Tomcat和Eclipse中的设置方法,以及4G内存推荐配置。文章还提到了-Xmn、-XX:NewSize和-XX:MaxNewSize等与年轻代大小相关的参数,并指出最大堆内存与最大非堆内存的总和受到操作系统的限制。
摘要由CSDN通过智能技术生成

JVM参数说明:

-server:一定要作为第一个参数,在多个CUP时性能佳

-Xms:java Heap初始化大小。默认物理内存的1/64

-Xmx:java Heap最大值。建议平均物理内存的一般。不可超过物理内存。

-XX:PermSize:设定内存的永久保存区初始化大小,缺省为64M

-XX:MaxPermSize:设定内存的永久保存区最大大小,缺省委64M

-XX:SurvivorRatio=2:生还者池的大小,默认是2,如果垃圾回收变成了瓶颈,您可以尝试定值生成池设置

-XX:NewSize:新生成的池初始化大小,缺省为2M。

-XX:MaxNewSize:新生成的池最大大小。缺省为32M。

这参数让JVM忽略Xmx参数,疯狂地吃完一个G物理内存,再吃尽1个G的swap。

-Xss:每个线程的Stack大小,-Xss 15120这使得JBoss没增加一个线程就会消耗15M内存,而最佳值应该是128k,默认512k

-verbose:gc 实现垃圾回收信息

-Xloggc:gc.log指定垃圾收集日志文件

-Xmn:young generation的heap大小,一般设置为Xmx的3,4之一

-XX:+UseParNewGC:所短minor收集的时间

-XX:+UserConcMarkSweepGC:所短major收集的时间 次选项在Heap Size比较大而且Major收集较长的情况下使用更合适。

-XX:userParNewGC 可用来设置多个并行收集

-XX:ParallelGCThreads可用来增加并行度

-XX:UseParallelGC设置后可以使用并行清理收集器

-XX:+UseBiasedLocking非竞争性的同步选项,锁机制的性能改善。

-XX:+DisableExplicitGC 禁止System.gc(),免得程序员误调用gc方法影响性能。

-XX:MaxTenuringThreshold 为放置所有的复制全部发生以及希望对象从eden扩展到旧域,可以把MaxTenuring Threshold设置成0。设置完成后,实际上就不再使用救助空间了,因此应把SurvivorRatio设成最大值以最大化Eden空间,设置如下:

-XX:+UseParNewGC 对年轻代采用多线程并行回收,这样收得快。

-XX:+CMSParallelRemarkEnabled 在使用UseParNewGC 的情况下, 尽量减少 mark 的时间

-XX:LargePageSizeInBytes 指定 Java heap的分页页面大小

-XX:MaxTenuringThreshold 设置垃圾最大年龄。

 

 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64;由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4。(还有一说:MaxPermSize缺省值和-server -client选项相关,
 -server选项下默认MaxPermSize为64m,-client选项下默认MaxPermSize为32m。)
 上面错误信息中的PermGen space的全称是Permanent Generation space,是指内存的永久保存区域。还没有弄明白PermGen space是属于非堆内存,还是就是非堆内存,但至少是属于了。
XX:MaxPermSize设置过小会导致java.lang.OutOfMemoryError: PermGen space 就是内存益出

 

JVM内存限制于实际的最大物理内存,假设物理内存无限大的话,JVM内存的最大值跟操作系统有很大的关系。简单的说就32位处理器虽然可控内存空间有4GB,但是具体的操作系统会给一个限制,
 这个限制一般是2GB-3GB(一般来说Windows系统下为1.5G-2G,Linux系统下为2G-3G),而64bit以上的处理器就不会有限制了。

参考:https://www.cnblogs.com/mingforyou/archive/2012/03/03/2378143.html

加的地方

echo Using CATALINA_BASE:上面加入这一行内容:(4G内存为例)

set JAVA_OPTS=%JAVA_OPTS% -server -XX:PermSize=512m -XX:MaxPermSize=1024m

eg1.

在"echo Using CATALINA_BASE: $CATALINA_BASE"上面加入以下行

JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m“

 

重启生效

eg2

 

Windows修改catalina.bat文件

set JAVA_OPTS=-server -Xms1024m -Xmx2048m -XX:PermSize=256m -XX:MaxPermSize=512m

eg3

%TOMCAT_HOME%/bin/catalina.sh添加JVM参数

JAVA_OPTS="-server 
                -Xms4096m 
                -Xmx4096m 
                -Xmn2048m 
                -XX:MaxDirectMemorySize=4096m 
                -XX:PermSize=256m 
           

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值