首页 > 学院 > 操作系统 > 正文

JVM参数理解

2024-06-28 16:00:09
字体:
来源:转载
供稿:网友

1、JVM的内存

JVM的内存 = 年轻代(Young) + 年老代(Tenured) + 持久代

-Xms: 设置初始JVM内存大小

-Xmx: 设置最大JVM内存大小     

           一般讲Xms, Xmx设置成一样的大小,避免超过Xms后,内存重新整理;另外,由于由于jvm进程本身会占用内存空间,所以jvm实际占用的内存空间会比设置的大

-Xmn: 设置年轻代内存大小(一般设置为Xmx的1/3)

            年轻代包括两个区,Edgen 和 Survivor 区,Suvrvior区还被平均分成了两块 from space 和 to space,默认情况下 Edgen与2个Survior大小比例  8:2, 即一个survivor占据

            1/10的年轻代内存大小。可以通过-XX:SurviorRatio=X 修改Edgen与Survior的大小比例

            老年代的大小无法设置,等于 JVM内存-年轻代-持久代;如果未指定-Xmn参数,可以通过-XX:NewRatio=X设置年轻代和年老代的比例,默认1:2, 即年轻代占据除去持久代内存的1/3

-XX:PermSize=256M: 持久代初始内存大小

-XX:MaxPermSize=512M: 最大持久代内存大小,一般不需要设置很大,可以在程序运行一段时间后,通过jconsole进行查看,从而调整持久代的初始值及最大值

2、其它参数

-server: 在linux上默认是开启的,windows上要手动设置

-XX:+UseG1GC: -Xmx设置超过4g时,建议开启;一般采用 -XX:+UseConcMarkSweepGC

                              垃圾回收期,有个名词STW: stop the world, 就是垃圾回收器在执行回收动作时,JVM会停止所有动作,即不做任何其它的事情,如果时间较长,将出现程序停止现象

-Djava.awt.headless=true: 在服务器上使用时,一般开启

3、举个例子

1)JAVA_OPTS="$JAVA_OPTS -Xms6g -Xmx6g -Xmn2g -Xss1024K-XX:PermSize=256M -XX:MaxPermSize=1g -Djava.awt.headless=true -XX:+UseG1GC "

2)JAVA_OPTS="$JAVA_OPTS -Xms2g -Xmx2g -Xmn700M -Xss512K -XX:PermSize=256M -XX:MaxPermSize=512M -Djava.awt.headless=true -XX:+UseConcMarkSweepGC"


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表