常用JVM内存设置以及调优
JVM内存简介
JVM占用的内存称为堆(heap),
他被分成三个区:
1>年轻(young,又称为new)
2>老(tenred,又称为old)
3>永生(perm)
这里的三个区按照java的生命周期进行划分,在new区的对象生存期最短,很快就会被gc回收;perm区的对象生存期最长,与JVM同生同死,perm区的对象不会被gc回收
New区又被分为三个部分:
1>伊甸园(eden)
2>幸存者1(survivor)
3>幸存者2(survivor)
对象的创建总是在eden部分.两个survivor中总有一个是空的,他作为另外一个survivor的缓冲区.当发生gc时,所有的eden和survivor中活下来的对象被移动到另一个survivor中.对象会在两个survivor直接不断移动,直到获得足够久然后移动到old区
GC回收算法
除了默认的垃圾回收算法外,JVM还提供了两个
前者作用于new区,后者作用于old区,两者可以同时使用.并行算法会产生多个线程以提高执行效率.当有多个CPU内核的时候,会显著的缩短gc的工作时间
性能参数说明
参数 | 含义 | 说明 |
-Xms | Heap的最小值 | 默认为系统物理内存的1/64 |
-Xmx | Heap 的最大值 | 默认为系统物理内存的1/4 ,作为同行的标准设置Xms和Xmx的大小一样,可以减少GC次数 |
-Xmn | New的大小 | |
-XX:PermSize | Perm的最小值 | |
-XX:MaxPermSize | Perm 的最大值 | 类似heap的设置,应该讲perm设置为固定大小. |
-XX:SurvivorRatio | New区中eden与Survivor区的比值 | |
-XX:+UseParallelGC | 使用parallelGC | |
-XX:ParallelGCThreads | Parallel gc的线程个数 | 与CPU核心数相同,使得所有CPU都参与GC工作 |
常见工具JVM设置
方法1:
进入eclipse的安装存放目录
找到eclipse.ini文件.打开
Linux系统:
修改TOMCAT_HOME/bin/catalina.sh
在第一行的后面添加一句
JAVA-OPTS=’-server –Xms256m –Xmx512m –XX:PermSize=128M –XX:MaxPermSize=256M’
注意Linux必须有单引号
Windows系统
修改TOMCAT_HOME/bin/catalina.bat
在第一行后面添加
set JAVA-OPTS=-server –Xms256m –Xmx512m –XX:PermSize=128M –XX:MaxPermSize=256M
注意:windows没有引号
注意:java options中每一行不能有空格
http://blog.xqlee.com/article/20.html