LoveUnix » 中间件技术 » jvm performance tunning
让LU留住您的每

一天 让LU博客留住您的每一天
2004-4-28 15:09 juechen70
1.1 LOW PAUSE Collector <br /><br />1.1.1 Parallel Copying Collector <br /><br /> <br /><br /> <br /><br />Figure 1 - Single Threaded &amp; Parallel Collection <br /><br />1:1的关系。<br /><br />1.1.2 Concurrent Collector <br /><br /> <br /><br /> <br />Figure 2 - Concurrent Collection <br /> <br /><br />1.2 Throughput Collectors <br /><br />1.2.1 Parallel Scavenge Collector <br /><br /> <br /><br />Figure 3 - Parallel Collection <br /><br />12G-80G heap.<br /><br />8CPU + <br /><br />1.2.2 Mark-Compact Collector <br /><br />the default old generation collector<br /><br /> Figure 4 - Mark-Compact Collection <br />2、JDK 1.4.1 堆模型<br /><br /><br />2.1 Young Generation Heap <br /><br />三代:<br /><br />young generation:Eden, and Semi-spaces. <br /><br />old generation<br /><br />permanent generation.<br /><br /> <br /><br />Figure 5 - 堆模型 <br /><br />  young generation各部分计算:<br /><br /> Eden = NewSize - ((NewSize / ( SurvivorRatio + 2)) * 2)<br /><br /><br /> Semi-spaces=From space=To space=NewSize / ( SurvivorRatio + 2)<br /><br />   NewSize是young generation的总大小 <br /><br />  SurvivorRatio:整数,1到更高。通过如下的参数进行定义: <br /><br />  -XX:NewSize<br />  -XX:MaxNewSize<br />  -XX:SurvivorRatio <br /><br />例:<br /><br />  java -Xms512m -Xmx512m -XX:NewSize=128m -XX:MaxNewSize=128m \<br />      -XX:SurvivorRatio=2 application <br /><br />2.2 Old Generation Heap <br /><br />  老化堆,通过-Xms参数控制:Old Generation=Xms-young generation<br /><br />例:<br /><br />  java -Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m \<br />      -XX:SurvivorRatio=2 application <br /><br />  young generation:256 MB<br />  old generation:256 MB.<br /><br />2.3 Permanent Generation Heap <br /><br />  存储类对象和相关的元数据:<br /><br />  缺省值为:4 MB,通过-XX:PermSize和-XX:MaxPermSize两个选项控制 <br /><br />例:<br /><br />  java -Xms512m -Xmx512m -XX:NewSize=256m -XX:MaxNewSize=256m \<br />      -XX:SurvivorRatio=2 -XX:PermSize=64m -XX:MaxPermSize=64m application <br /><br />缺省情况:<br /><br />  young Generation:2M Eden,64K semi-space<br /><br />  older generation heap:5MB,最大44MB<br /><br />  permanent generation:4MB. <br /><br />使用-Xms和-Xmx参数只能调整old generation <br /><br />  例:<br /><br />  java -Xms128m -Xmx512m application <br /><br />3、使用:XX参数来使用新的New Low Pause或Throughput Collectors <br /><br />3.1 使用Low Pause Collectors <br /><br />  对于young generation, 可以使用-XX:+UseParNewGC来启用parallel copying collector,对于older generations可以使用-XX:+ UseConcMarkSweepGC来启用concurrent collector<br /><br />  例: <br /><br />  java -server -Xms512m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=64m \<br />      -XX:SurvivorRatio=2 -XX:+ UseConcMarkSweepGC \<br />      -XX:+UseParNewGC application <br /><br />注意:<br /><br />1、young generation缺省使用copying collector<br /><br />2、在单位CPU机器上,使用了-XX+UseParNewGC,缺省的copy collector还是只有一个。但可以控制并行度<br /><br />3.1.1 控制并行度<br /><br />  使用如下选项控制并行度:<br /><br />   -XX:ParallelGCThreads=并行度<br /><br />  缺省值为CPU的数量 <br /><br />例: <br /><br />  java -server -Xms512m -Xmx512m -XX:NewSize=64m -XX:MaxNewSize=64m \<br />      -XX:SurvivorRatio=2 -XX:+UseParNewGC -XX:ParallelGCThreads=4 \<br />      -XX:+UseConcMarkSweepGC application <br /><br />3.1.2 在JDK1.4.1下模拟&quot;promoteall&quot;<br /><br />  &quot;promoteall&quot; 是jdk1.2.2的一个机制,将所有的对象都放到old grenration.使用如下的选项可以在1.4.1中模拟该机制: <br /><br />  -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=20000 <br /><br />  <br /><br />3.1.3 控制Concurrent collection 的启动<br /><br />  concurrent collector做为后台线程,在old generation使用率达到一定程度时启动,缺省值为68%,可以使用如下参数进行控制: <br /><br />  -XX:CMSInitiatingOccupancyFraction=百分比 <br /><br />  <br /><br />3.2 使用Throughput Collectors <br /><br />  对于young generation,使用-XX:UseParallelGC来启用arallel scavenge collector, older generation缺省情况下就使用mark-compact collector<br /><br />  32位环境: <br /><br />  java -server -Xms3072m -Xmx3072m -XX:NewSize=2560m \<br />      -XX:MaxNewSize=2560m XX:SurvivorRatio=2 \<br />      -XX:+UseParallelGC application <br /><br />  64位环境: <br /><br />  java -server -d64 -Xms8192m -Xmx8192m -XX:NewSize=7168m \<br />      -XX:MaxNewSize=7168m XX:SurvivorRatio=2 \<br />      -XX:+UseParallelGC application <br /><br />  注意:<br /><br />3.2.1 控制并行度<br /><br />  使用如下参数控制并行度:<br /><br />  -XX:ParallelGCThreads=希望的并行度<br /><br />  缺省情况下为CPU数量<br /><br />3.2.2 Adaptive Sizing for Performance <br /><br />  Parallel scavenge collector可以使用如下参数自动分配young generation的相关参数-XX:+UseAdaptiveSizePolicy.例: <br /><br />  java -server -Xms3072m -XX:+UseParallelGC \<br />      -XX:+UseAdaptiveSizePolicy application <br /><br /> <br /><br /> <br /><br />4 jdk 1.4通过如下选项生成详细的GC信息<br /><br />-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC<br /><br />-Xloggc:filename将gc的log放到一个单独的文件中。<br /><br />  <br /><br />5、使用 GC Analyzer Usage <br /><br />使用方法:<br />gc_analyze.pl [-d] &lt;gclogfile&gt; &lt;CPS&gt; &lt;active_call_duration&gt; &lt;CPUs&gt; &lt;application_run_time_in_ms&gt; <br /><br />参数名 意义 <br />-d 输出详细的分析与总结 <br />gclogfile gc log文件 <br />CPS 缺省50 <br />active_call_duration 缺省为32000ms <br />CPUs CPU数量,1个 <br />applcation_run_Time_in_ms 运行时间 <br /><br />6 jdk1.4.1 Garbage Collector选项<br /><br />Heap Layout <br /><br />选项 缺省值 最大值 描述 <br />-XX:NewSize 2Mb &lt; 100 GB young generation初始值 <br />-XX:MaxNewSize   &lt; 100 GB young generation最大值 <br />-XX:SurvivorRatio WIN:8<br /><br />SOL:64<br /> &lt;100000 控制eden space大小 <br />-Xms 5 MB &lt; 100 GB 缺省堆大小 <br />-Xmx 4 MB &lt; 100 GB 最大堆大小 <br />-Xmn     young generation的大小 <br />-XX:MaxTenuringThreshold 31   Maximum number of times object is aged. Set this to 0 to enable promoteall. <br />-XX:PermSize 4 MB &lt; 10 GB permanent generation初始值 <br />-XX:MaxPermSize 64 MB &lt; 10 GB permanent generation最大值 <br />-XX:NewRatio server:2 <br /><br />client:8 <br />   young generation 与old generation的比例 <br />-XX:PretenureSizeThreshold 0   大于这个尺寸的对象直接分配在older generation <br />-XX:+UseISM     使用ISM <br />-XX:+UseMPSS     使用multiple page sizes  <br />-XX:+UseTLAB True on Solaris   使用本地线程对象分配 <br />-XX:+AggressiveHeap     Use for throughput applications with lots of CPUs and memory &gt; 256MB. Turns on various flags, uses parallel scavenge collector for young generation, turns on Adaptive<br />SizePolicy, increase sizes of TLAB and other data structures <br />-XX:TargetSurvivorRatio 50 100 Desired percentage of survivor space used after a scavenge

页: [1]
查看完整版本: jvm performance tunning


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.