﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-无为</title><link>http://www.blogjava.net/mlh123caoer/</link><description>无为则可为，无为则至深！
</description><language>zh-cn</language><lastBuildDate>Fri, 14 Aug 2026 13:08:48 GMT</lastBuildDate><pubDate>Fri, 14 Aug 2026 13:08:48 GMT</pubDate><ttl>60</ttl><item><title>服务器端Java VM参数配置</title><link>http://www.blogjava.net/mlh123caoer/archive/2011/11/06/362893.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Sun, 06 Nov 2011 05:18:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2011/11/06/362893.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/362893.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2011/11/06/362893.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/362893.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/362893.html</trackback:ping><description><![CDATA[<div><div>&nbsp;内部服务参数配置：</div>JAVA_OPTS="-server -XX:+UseParNewGC -Xms1024m -Xmx2048m -XX:MaxNewSize=128m -XX:NewSize=128m -XX:PermSize=96m -XX:MaxPermSize=128m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:CMSInitiatingOccupancyFraction=1 -XX:+CMSIncrementalMode -XX:MaxTenuringThreshold=0 -XX:SurvivorRatio=20000 -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 &nbsp;-XX:CMSIncrementalDutyCycleMin=10 -XX:CMSIncrementalDutyCycle=30 -XX:CMSMarkStackSize=8M -XX:CMSMarkStackSizeMax=32M"<br /><br />前端应用参数配置：<br /><div>&nbsp;JAVA_OPTS="-server&nbsp;&nbsp;-Xmx4096m&nbsp;-Xms4096m&nbsp;-Xmn480m&nbsp;-Xss256k&nbsp;-XX:PermSize=128m&nbsp;-XX:MaxPermSize=256m&nbsp;-XX:+UseConcMarkSweepGC&nbsp;-XX:ParallelGCThreads=8&nbsp;-XX:CMSFullGCsBeforeCompaction=0&nbsp;<br />-XX:+UseCMSCompactAtFullCollection&nbsp;-XX:SurvivorRatio=8&nbsp;-XX:MaxTenuringThreshold=7&nbsp;-XX:GCTimeRatio=19&nbsp;<br />-Xnoclassgc&nbsp;-XX:+DisableExplicitGC&nbsp;-XX:+UseParNewGC&nbsp;-XX:-CMSParallelRemarkEnabled&nbsp;-XX:CMSInitiatingOccupancyFraction=70&nbsp;-XX:SoftRefLRUPolicyMSPerMB=0"&nbsp;</div><br /><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; ">参数说明：</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-Xmx1280m</strong>：设置JVM最大可用内存为1280m。最大可设为3550m。具体应用可适当调整。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-Xms1280m</strong>：设置JVM初始内存为1280m。此值可以设置与-Xmx相同，以避免每次垃圾回收完成后JVM重新分配内存。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-Xmn480m</strong>：设置年轻代大小为480m。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m，所以增大年轻代后，将会减小年老代大小。此值对系统性能影响较大，Sun官方推荐配置为整个堆的3/8。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-Xss256k</strong>：设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M，以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下，减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的，不能无限生成，经验值在3000~5000左右。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:PermSize=64m</strong>：指定 jvm 中 Perm Generation 的最小值。 这个参数需要看你的实际情况。可以通过jmap 命令看看到底需要多少。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:MaxPermSize=128m</strong>：指定 Perm Generation 的最大值</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:+UseConcMarkSweepGC</strong><strong>：</strong>设置并发收集器</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:ParallelGCThreads=8</strong><strong>：</strong>配置并行收集器的线程数，即：同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:CMSFullGCsBeforeCompaction=0</strong><strong>：</strong>由于并发收集器不对内存空间进行压缩、整理，所以运行一段时间以后会产生&#8220;碎片&#8221;，使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:+UseCMSCompactAtFullCollection</strong><strong>：</strong>打开对年老代的压缩。可能会影响性能，但是可以消除碎片。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:SurvivorRatio=8</strong><strong>：</strong>每个survivor space 和 eden之间的比例。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:MaxTenuringThreshold=7</strong><strong>：</strong>设置垃圾最大年龄。如果设置为0的话，则年轻代对象不经过Survivor区，直接进入年老代。对于年老代比较多的应用，可以提高效率。如果将此值设置为一个较大值，则年轻代对象会在Survivor区进行多次复制，这样可以增加对象再年轻代的存活时间，增加在年轻代即被回收的概率。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:GCTimeRatio=19</strong><strong>：</strong>设置垃圾回收时间占程序运行时间的百分比，公式为1/(1+n)。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-Xnoclassgc</strong><strong>：</strong>禁用类垃圾回收，性能会有一定提高。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:+DisableExplicitGC</strong><strong>：</strong>当此参数打开时，在程序中调用System.gc()将会不起作用。默认是off。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:+UseParNewGC</strong><strong>：</strong>设置年轻代为并行收集。可与CMS收集同时使用。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:-CMSParallelRemarkEnabled</strong><strong>：</strong>在使用 UseParNewGC 的情况下 , 尽量减少 mark 的时间。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:CMSInitiatingOccupancyFraction=70</strong><strong>：</strong>指示在 old generation 在使用了 70% 的比例后 , 启动 concurrent collector。</p><p style="font-size: 13px; line-height: 17px; color: #333333; background-color: #ffffff; padding: 0px; margin-bottom: 10px; font-family: Arial, Helvetica, FreeSans, sans-serif; text-align: left; "><strong>-XX:SoftRefLRUPolicyMSPerMB=0</strong><strong>：</strong>每兆堆空闲空间中SoftReference的存活时间。</p><div><div><div><div><div></div></div></div></div></div></div><img src ="http://www.blogjava.net/mlh123caoer/aggbug/362893.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/mlh123caoer/" target="_blank">草儿</a> 2011-11-06 13:18 <a href="http://www.blogjava.net/mlh123caoer/archive/2011/11/06/362893.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java heap dump触发和分析</title><link>http://www.blogjava.net/mlh123caoer/archive/2011/10/04/360020.html</link><dc:creator>草儿</dc:creator><author>草儿</author><pubDate>Tue, 04 Oct 2011 14:31:00 GMT</pubDate><guid>http://www.blogjava.net/mlh123caoer/archive/2011/10/04/360020.html</guid><wfw:comment>http://www.blogjava.net/mlh123caoer/comments/360020.html</wfw:comment><comments>http://www.blogjava.net/mlh123caoer/archive/2011/10/04/360020.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/mlh123caoer/comments/commentRss/360020.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/mlh123caoer/services/trackbacks/360020.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="color: #4e4e4e; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: normal; background-color: #ffffff; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">为了分析java应用的内存泄漏，使用thread dump往往解决不了问题。使用jstat【eg：<a href="http://www.google.com.hk/url?sa=t&amp;source=web&amp;cd=2&amp;ved=0CCgQFjAB&amp;url=http%3A%2F%2Fdownload.oracle.com%2Fjavase%2F1.5.0%2Fdocs%2Ftooldocs%2Fshare%2Fjstat.html&amp;ei=yPiSTbqoCYLOvQPlgom9CA&amp;usg=AFQjCNFn5NygCF6PuGM4GqcYCtc6X8XCVw&amp;sig2=h-u3sevbVJ94VvDwodD9qg" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">jstat&nbsp;</a>-gcutil pid 1000 5】工具查看运行的java应用的heap size,perm size ,survivor ratio等，当时你无法知道是什么对象把堆填满了。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 602px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">&nbsp;&nbsp;&nbsp;&nbsp; 什么是 Java heap dump<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 首先需要搞懂什么是java heap，java heap是分配给实例类和数组对象运行数据区，所有java线程在运行期间共享heap中的数据。Java heap dump相当于java应用在运行的时候在某个时间点上打了个快照（snapshot）。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">&nbsp;&nbsp;&nbsp;&nbsp; 如果你不懂啥是snapshot，点击<a href="http://en.wikipedia.org/wiki/Snapshot_%28computer_storage%29" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">这里</a></span></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 602px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">&nbsp;&nbsp;&nbsp;&nbsp; 触发 Java heap dump</strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">有以下方法出发heap dump</span></p><ol style="margin-top: 0.4em; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">使用$JAVA_HOME/bin/<a href="http://www.google.com.hk/url?sa=t&amp;source=web&amp;cd=2&amp;ved=0CCAQFjAB&amp;url=http%3A%2F%2Fdownload.oracle.com%2Fjavase%2F1.5.0%2Fdocs%2Ftooldocs%2Fshare%2Fjmap.html&amp;ei=5_iSTYP2HJCOvQPU_pm9CA&amp;usg=AFQjCNFr8XgO8PX4-4QvoRxFvAh4LEXA5g&amp;sig2=lJb4GdMId12S6_Ew6YXvag" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">jmap</a>&nbsp;-dump来触发，eg：jmap -dump:format=b,file=/home/longhao/heamdump.out &lt;pid&gt;</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">使用$JAVA_HOME/bin/<a href="http://www.google.com.hk/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBkQhgIwAA&amp;url=http%3A%2F%2Fjava.sun.com%2Fdeveloper%2FtechnicalArticles%2FJ2SE%2Fjconsole.html&amp;ei=-PiSTeLLDY7UvQODi5G9CA&amp;usg=AFQjCNEFUBKnvOZ50G07zeJLsOXFZ-UVSw&amp;sig2=HDZn6b06a27ZD87DYJJsPw" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">jcosole</a>中的MBean，到MBean&gt;com.sun.management&gt;HotSpotDiagnostic&gt;操作&gt;dumpHeap中，点击 dumpHeap按钮。生成的dump文件在java应用的根目录下面。</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">在应用启动时配置相关的参数 -XX:+HeapDumpOnOutOfMemoryError，当应用抛出OutOfMemoryError时生成dump文件。</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 2.5em; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; list-style-position: outside; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">使用<a href="http://www.google.com.hk/url?sa=t&amp;source=web&amp;cd=1&amp;ved=0CBkQFjAA&amp;url=http%3A%2F%2Fjava.sun.com%2Fdeveloper%2FtechnicalArticles%2FProgramming%2FHPROF.html&amp;ei=FPmSTaH5LYncvwObyv28CA&amp;usg=AFQjCNHrnFaZkSrAE4cKpk3A6L4AcrDWAw&amp;sig2=nhRGV8HnAQsGhulSSdgdBg" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">hprof</a>。启动虚拟机加入-Xrunhprof:head=site，会生成java.hprof.txt文件。该配置会导致jvm运行非常的慢，不适合生产环境。</span></li></ol><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></span></p></div><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 602px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">&nbsp;&nbsp;&nbsp;&nbsp; 分析 Java heap dump</strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 9px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: arial, helvetica, sans-serif; line-height: 21px; background-color: #e6e6fa; height: 25px; width: 588px; font-size: 14px; color: #000000; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; "><strong style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; ">&nbsp;&nbsp;&nbsp;&nbsp; 1：使用IBM HeapAnalyzer<br style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; " /></strong></span></p><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 6px; padding-left: 6px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; border-left-width: 2px; border-left-style: solid; border-left-color: #cccccc; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; font-size: 14px; ">&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.alphaworks.ibm.com/tech/heapanalyzer" target="_blank" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; color: #0071bb; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; ">IBM HeapAnalyzer</a>是一款免费的JVM内存堆的图形分析工具，它可以有效的列举堆的内存使用状况，帮助分析Java内存泄漏的原因。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0.8em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: 'Segoe UI', Calibri, 'Myriad Pro', Myriad, 'Trebuchet MS', Helvetica, Arial, sans-serif; line-height: 21px; "><span style="margin-top: 0px; margin-right: 0px; ma