欢迎来到天天文库
浏览记录
ID:15824360
大小:35.50 KB
页数:5页
时间:2018-08-05
《java内存查看与分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Java内存查看与分析[导读]业界有很多强大的javaprofile的工具,比如Jporfiler,yourkit,这些收费的东西我就不想说了,想说的是,其实java自己就提供了很多内存监控的小工具,下面列举的工具只是一小部分。 业界有很多强大的javaprofile的工具,比如Jporfiler,yourkit,这些收费的东西我就不想说了,想说的是,其实java自己就提供了很多内存监控的小工具,下面列举的工具只是一小部分,仔细研究下jdk的工具,还是蛮有意思的呢:) 1:gc日志输出 在
2、jvm启动参数中加入-XX:+PrintGC-XX:+PrintGCDetails-XX:+PrintGCTimestamps-XX:+PrintGCApplicationStopedTime,jvm将会按照这些参数顺序输出gc概要信息,详细信息,gc时间信息,gc造成的应用暂停时间。如果在刚才的参数后面加入参数-Xloggc:文件路径,gc信息将会输出到指定的文件中。其他参数还有-verbose:gc和-XX:+PrintTenuringDistribution等。 2:jconsole
3、jconsole是jdk自带的一个内存分析工具,它提供了图形界面。可以查看到被监控的jvm的内存信息,线程信息,类加载信息,MBean信息。 jconsole位于jdk目录下的bin目录,在windows下是jconsole.exe,在unix和linux下是jconsole.sh,jconsole可以监控本地应用,也可以监控远程应用。要监控本地应用,执行jconsolepid,pid就是运行的java进程id,如果不带上pid参数,则执行jconsole命令后,会看到一个对话框弹出,上面列出
4、了本地的java进程,可以选择一个进行监控。如果要远程监控,则要在远程服务器的jvm参数里加入一些东西,因为jconsole的远程监控基于jmx的,关于jconsole详细用法,请见专门介绍jconsle的文章,我也会在博客里专门详细介绍jconsole。 3:jviusalvm 在JDK6update7之后,jdk推出了另外一个工具:jvisualvm,java可视化虚拟机,它不但提供了jconsole类似的功能,还提供了jvm内存和cpu实时诊断,还有手动dump出jvm内存情况,手动执
5、行gc。 和jconsole一样,运行jviusalvm,在jdk的bin目录下执行jviusalvm,windows下是jviusalvm.exe,linux和unix下是jviusalvm.sh。 4:jmap jmap是jdk自带的jvm内存分析的工具,位于jdk的bin目录。jdk1.6中jmap命令用法:Usage:jmap-histo(toconnecttorunningprocessandprinthistogramofjavaobjectheapjmap-dump:(toc
6、onnecttorunningprocessanddumpjavaheap)dump-options:format=bbinarydefaultfile=dumpheaptoExample:jmap-dump:format=b,file=heap.binjmap-histo在屏幕上显示出指定pid的jvm内存状况。以我本机为例,执行该命令,屏幕显示:num#instances#bytesclassname----------------------------------------------
7、1:2420627918642:223712145216[C3:2420619406484:195113644965:2654312825606:63771081744[B7:17939096888:14716146249:14581548336[Ljava.lang.Object;10:3863513640[I11:20677496248java.lang.String12:3621312776[Ljava.util.HashMap$Entry;13:3335266800java.lang.r
8、eflect.Method14:8256264192java.io.ObjectStreamClass$WeakClassKey15:7066226112java.util.TreeMap$Entry16:2355173304[S17:1687161952java.lang.Class18:2769150112[[I19:3563142520java.util.HashMap20:5562133488java.util.HashMap$EntryTotal23901917140408 为了方便
此文档下载收益归作者所有