关键字:内存监控工具及命令

一篇非常好的内存监控知识,分享给爱学习的亲们.....

jinfo:可以输出并修改运行时的java 进程的opts。

jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。

jstat:一个极强的监视VM内存工具。可以用来监视VM内存内的各种堆和非堆的大小及其内存使用量。

jmap:打印出某个java进程(使用pid)内存内的,所有‘对象’的情况(如:产生那些对象,及其数量)。

jconsole:一个java GUI监视工具,可以以图表化的形式显示各种数据。并可通过远程连接监视远程的服务器VM。

jprofiler:是一个非常优秀的内存监控工具,可以监控tomcat、eclipse等

接下来是对这些工具的详细介绍:

从最简单的jstat工具开始:我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其id。jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。

使用方法:在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打)

接下来是jstat,我之所以这次调优Liferay portal是因为,liferay在默认的情况下,并发用户一多就会产生perm out of momery异常。虽然很开就解决了,但发现对VM内存使用量监控的重要性。通过google,很快的发现了jstat这个工具。

jstat工具特别强大,有众多的可选项,详细查看堆内各个部分的使用量,以及加载类的数量。使用时,需加上查看进程的进程id,和所选参数。以下详细介绍各个参数的意义。

jstat -class pid:显示加载class的数量,及所占空间等信息。

jstat -compiler pid:显示VM实时编译的数量等信息。

jstat -gc pid:可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。

jstat -gccapacity:可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大使用量,PGC是当前新生成的perm内存占用量,PC是但前perm内存占用量。其他的可以根据这个类推, OC是old内纯的占用量。

jstat -gcnew pid:new对象的信息。

jstat -gcnewcapacity pid:new对象的信息及其占用量。

jstat -gcold pid:old对象的信息。

jstat -gcoldcapacity pid:old对象的信息及其占用量。

jstat -gcpermcapacity pid: perm对象的信息及其占用量。

jstat -util pid:统计gc信息统计。

jstat -printcompilation pid:当前VM执行的信息。

除了以上一个参数外,还可以同时加上 两个数字,如:jstat -printcompilation 3024 250 6是每250毫秒打印一次,一共打印6次,还可以加上-h3每三行显示一下标题。

jmap是一个可以输出所有内存中对象的工具,甚至可以将VM 中的heap,以二进制输出成文本。使用方法 jmap -histo pid。如果连用SHELL jmap -histo pid>a.log可以将其保存到文本中去,在一段时间后,使用文本对比工具,可以对比出GC回收了哪些对象。jmap -dump:format=b,file=String 3024可以将3024进程的内存heap输出出来到String文件里。

jinfo:的用处比较简单,就是能输出并修改运行时的java进程的运行参数。用法是jinfo -opt  pid 如:查看2788的MaxPerm大小可以用  jinfo -flag MaxPermSize 2788。

jconsole是一个用java写的GUI程序,用来监控VM,并可监控远程的VM,非常易用,而且功能非常强。由于是GUI程序,这里就不详细介绍了,不会的地方可以参考SUN的官方文档。

使用方法:命令行里打 jconsole,选则进程就可以了。

以下是这些工具的SUN官方说明:

jps:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jps.html

jstat:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jstat.html

jmap:http://java.sun.com/j2se/1.5.0/docs/tooldocs/share/jmap.html

jconsole:http://java.sun.com/j2se/1.5.0/docs/guide/management/jconsole.html

附加:

windows查看进程号,由于任务管理器默认的情况下是不显示进程id号的,所以可以通过如下方法加上。ctrl+alt+del打开任务管理器,选择‘进程’选项卡,点‘查看’->'选择列'->加上'PID',就可以了。

Java内存监控程序_java内存监控工具及命令相关推荐

  1. java 如何排查内存溢出_java 内存溢出排查

    测试代码,如下示例: import java.util.ArrayList; import java.util.List; /** * @Description 测试内存溢出, 启动时设置参数,最大堆 ...

  2. java查看内存泄露_Java内存泄露如何排查

    Java内存泄露是常常出现的问题,Java攀登网进行了该问题的整理,具体的如下所示: 1.2 内存泄露Memory Leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内 存泄露危害可以忽略 ...

  3. java list 内存溢出_java内存溢出的2种情况

    java程序员在面试经常被问到内存om之后如何处理,但是实际在工作中遇到此类问题的情况却又非常少. 进过自己一番总结内存溢出主要分为2种: 一.堆内存溢出 OutOfMemoryError 从jvm的 ...

  4. JAVA 继承内存模型_Java内存模型

    JVM的组成 类加载器(classloader) 执行引擎(execution engine) 运行时数据区域(runtime data area) 对于Java程序员来说,在虚拟机自动内存管理机制下 ...

  5. java内存规范_Java内存模型-jsr133规范介绍

    最近在看<深入理解Java虚拟机:JVM高级特性与最佳实践>讲到了线程相关的细节知识,里面讲述了关于java内存模型,也就是jsr 133定义的规范. 系统的看了jsr 133规范的前面几 ...

  6. java gc原理_Java内存管理以及GC工作原理

    1.内存管理简介 内存管理的职责为分配内存,回收内存. 没有自动内存管理的语言/平台容易发生错误. 典型的问题包括悬挂指针问题,一个指针引用了一个已经被回收的内存地址,导致程序的运行完全不可知. 另一 ...

  7. java 内存溢出 内存泄露_java 内存泄露、内存溢出、内存不足

    内存泄露 什么是内存泄露? 在维基百科上的定义如图: 中文意思就是一个对象在内存中,而程序无法获取此对象,于是不能释放该对象所占用的内存. 百度百科上的定义如图: OWASP上的定义: 开发者无法释放 ...

  8. java内存模型和内存结构_Java内存模型和优化

    java内存模型和内存结构 总览 许多多线程代码开发人员都熟悉这样的想法,即不同的线程可以对持有的值有不同的看法,这不是唯一的原因,即如果线程不安全,它可能不会看到更改. JIT本身可以发挥作用. 为 ...

  9. java堆内存 数据结构_JAVA内存区域

    首先解释下内存溢出和内存泄露之间的区别,为后面的学习做些铺垫: 1.内存溢出和内存泄露的区别和联系 内存溢出 out of memory:是指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你 ...

  10. java 解决内存泄露_Java内存泄露的理解与解决

    Java内存管理机制 在C++语言中,如果需要动态分配一块内存,程序员需要负责这块内存的整个生命周期.从申请分配.到使用.再到最后的释放.这样的过程非常灵活,但是却十分繁琐,程序员很容易由于疏忽而忘记 ...

最新文章

  1. c#中常用集合类和集合接口之接口系列【转】
  2. linux nfs配置
  3. php自定义session存储路径
  4. mysql bit_or() bit_count()函数
  5. java解决硬编码_工具类 解决硬编码问题
  6. 刘宇凡:苍井空卖内衣 典型的情怀产品
  7. 简易交通灯设计——数电课设
  8. 百度地图WEB服务-全景静态图使用心得
  9. 布局平板电脑 英特尔Atom新核芯全解析
  10. linux进入rescue,进入Linux rescue模式后有几种方法引导系统
  11. java.lang maven_maven 项目出现 java.lang.ClassNotFoundException
  12. 新版Jenkins关闭CSRF“HTTP ERROR 403 No valid crumb was included in the request“
  13. Android下载图片并添加图片水印
  14. Solidworks快速装配——带配合装配与阵列装配(带例子解释)
  15. chmod命令原理及用法详解
  16. php网页可视化调试工具,php-xdebug调试工具
  17. 服务器修改ip为什么需要重启,xp修改ip需要重启 - 卡饭网
  18. 三款开源关系型数据库对比:MySQL、PostgreSQL、SQLite
  19. bugku_noteasytrick
  20. open3d学习教程2--点云1

热门文章

  1. 开播虚拟人物特效插件 yy歪歪直播使用主播专用
  2. 微信公众号在开发者模式下自定义菜单
  3. Dorado 7 使用到的 注释
  4. Silvaco TCAD仿真2——Silvaco TCAD 档名
  5. coap协议开发实例C语言,CoAP协议及开源实现
  6. PeakDo毫米波无线投屏器
  7. 软件设计师中级-笔记
  8. qemu中vCPU对应的线程
  9. Linux系统编程---消息队列
  10. 海洋技术课设遥感反演matlab,国家重点研发计划项目“新型海洋微波遥感探测机理模型与应用研究” 课题一“微波极化遥感机理与应用技术”学术研讨会顺利召开...