- 浏览: 334280 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (198)
- HIBERNATE (8)
- JAVA (13)
- 数据库 (24)
- SPRING (1)
- LINUX (0)
- 需求管理 (3)
- 职业提升 (6)
- 团队建设 (1)
- 日常用到语句 (1)
- FLEX (6)
- 用户体验 (3)
- 设计模式 (6)
- weblogic (2)
- PowerDesigner (3)
- HTML (7)
- ANT (7)
- 工具. (1)
- bat (5)
- 存储过程 (1)
- strus2 (1)
- DWR (2)
- jfreechart (4)
- 上线测试优化 (17)
- JVM (9)
- 工具使用 (2)
- 算法 (3)
- 私事 (0)
- 数据库-Oracle session (1)
- 软件开发 (5)
- 产品 (2)
- 项目管理 (4)
- oracle语句 (1)
- IntelliJ IDEA (4)
- GRAILS (10)
- Groovy (1)
- JS (1)
- DUBBO (1)
- JAVA EXCEL (3)
- netty websocket (1)
- kafka (1)
- 秘钥体系 (2)
- golang (6)
- gradle (1)
- spring cloud (0)
最新评论
-
wujt:
...
Grails_数据库逆向工程插件 db-reverse-engineer -
yy8093:
我也遇到这个问题,不过并不觉得是个好的方法。。。。不过最后也确 ...
关于dubbo服务产生异常之:Caused by: com.alibaba.dubbo.remoting.TimeoutException: Waiting s -
wujt:
# ----- Execute The Requested C ...
jconsole基础配置(原创) -
gaowei52306:
你好,请问remotedir="/home/dmwe ...
Ant FTP -
抢街饭:
ant生成日志 在命令行也能看见 怎么去做啊
ant生成日志
JMAP、jstat命令详解(转)
显示java进程内存使用的相关信息
jmap pid #打印内存使用的摘要信息
jmap –heap pid #java heap信息
jmap -histo:live pid #统计对象count ,live表示在使用
jmap -histo pid >mem.txt #打印比较简单的各个有多少个对象占了多少内存的信息,一般重定向的文件
jmap -dump:format=b,file=mem.dat pid #将内存使用的详细情况输出到mem.dat 文件
用jhat命令可以参看 jhat -port 7000 mem.dat
然后使用:http://127.0.0.1:7000/ 查看类相关信息
各个className
BaseType Character Type Interpretation Bbytesigned byte CcharUnicode character Ddoubledouble-precision floating-point value Ffloatsingle-precision floating-point value Iintinteger Jlonglong integer L<classname>;referencean instance of class <classname> Sshortsigned short Zbooleantrue or false [reference
one array dimension
内存泄漏一般都是有一定特征的,任何代码和数据都要占用内存,我简单总结内存泄漏的特征是内存占用不可控制,GC不可回收。我追踪内存使用量的曲线发现一些特征,在估计虚拟机即将崩溃时,使用
jmap-histo pid >mem.txt 发现相关内存泄漏的对象占用非常大比例的内存空间,然后很容易猜测问题大概的位置,一下子就解决了。
Jstat是Sun JDK中自带的监控工具,利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控等等。JStat是命令行方式运行,对系统资源占用很小,在大压力下很少影响性能。并且运行要求低,只要通过Telnet或SSH等方式远程登录到服务器所在机器,就可以进行监控。在与Jmap、JStack等工具结合使用时非常方便。
使用jstat命令监测如下内存使用和垃圾回收统计数据:
$ <JDK>/bin/jstat –gcutil [-h<lines>] <pid> <interval>
jstat - gcutil选项打印所运行应用程序进程ID <pid>在指定抽样间隔<interval>下,堆使用及垃圾回收时间摘要,并且每<lines>行显示一次头信息。这产生出以下样例输出:
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 24.48 46.60 90.24 142 0.530 104 28.739 29.269
0.00 0.00 2.38 51.08 90.24 144 0.536 106 29.280 29.816
0.00 0.00 36.52 51.08 90.24 144 0.536 106 29.280 29.816
0.00 26.62 36.12 51.12 90.24 145 0.538 107 29.552 30.090
一些术语的中文解释:
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
如果FGC 过多,有必要调整下jvm参数
[root@yy8 bin]# jstat -gcutil 3821 5000 10
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 100.00 95.11 59.02 370 48.495 121 337.359 385.855
0.00 0.00 84.36 99.99 59.03 370 48.495 122 345.393 393.888
0.00 50.37 100.00 99.49 59.03 370 48.495 123 348.494 396.989
0.00 100.00 100.00 56.58 59.03 371 48.496 124 348.494 396.989
0.00 0.00 56.50 96.57 59.02 371 48.496 125 355.148 403.643
0.00 0.00 100.00 96.57 59.02 372 48.496 126 355.148 403.643
0.00 0.00 37.17 90.75 59.02 372 48.496 127 361.721 410.217
0.00 0.00 100.00 90.75 59.02 373 48.496 128 361.721 410.217
5000 是5秒 ,10是10次
参考范例
JAVA_OPTS="-server -Xms4g -Xmx4g -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn2560m -XX:SurvivorRatio=10 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX
:CMSMaxAbortablePrecleanTime=5000 -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=80
显示java进程内存使用的相关信息
jmap pid #打印内存使用的摘要信息
jmap –heap pid #java heap信息
jmap -histo:live pid #统计对象count ,live表示在使用
jmap -histo pid >mem.txt #打印比较简单的各个有多少个对象占了多少内存的信息,一般重定向的文件
jmap -dump:format=b,file=mem.dat pid #将内存使用的详细情况输出到mem.dat 文件
用jhat命令可以参看 jhat -port 7000 mem.dat
然后使用:http://127.0.0.1:7000/ 查看类相关信息
各个className
BaseType Character Type Interpretation Bbytesigned byte CcharUnicode character Ddoubledouble-precision floating-point value Ffloatsingle-precision floating-point value Iintinteger Jlonglong integer L<classname>;referencean instance of class <classname> Sshortsigned short Zbooleantrue or false [reference
one array dimension
内存泄漏一般都是有一定特征的,任何代码和数据都要占用内存,我简单总结内存泄漏的特征是内存占用不可控制,GC不可回收。我追踪内存使用量的曲线发现一些特征,在估计虚拟机即将崩溃时,使用
jmap-histo pid >mem.txt 发现相关内存泄漏的对象占用非常大比例的内存空间,然后很容易猜测问题大概的位置,一下子就解决了。
Jstat是Sun JDK中自带的监控工具,利用了JVM内建的指令对Java应用程序的资源和性能进行实时的命令行的监控,包括了对Heap size和垃圾回收状况的监控等等。JStat是命令行方式运行,对系统资源占用很小,在大压力下很少影响性能。并且运行要求低,只要通过Telnet或SSH等方式远程登录到服务器所在机器,就可以进行监控。在与Jmap、JStack等工具结合使用时非常方便。
使用jstat命令监测如下内存使用和垃圾回收统计数据:
$ <JDK>/bin/jstat –gcutil [-h<lines>] <pid> <interval>
jstat - gcutil选项打印所运行应用程序进程ID <pid>在指定抽样间隔<interval>下,堆使用及垃圾回收时间摘要,并且每<lines>行显示一次头信息。这产生出以下样例输出:
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 24.48 46.60 90.24 142 0.530 104 28.739 29.269
0.00 0.00 2.38 51.08 90.24 144 0.536 106 29.280 29.816
0.00 0.00 36.52 51.08 90.24 144 0.536 106 29.280 29.816
0.00 26.62 36.12 51.12 90.24 145 0.538 107 29.552 30.090
一些术语的中文解释:
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
NGCMN:年轻代(young)中初始化(最小)的大小 (字节)
NGCMX:年轻代(young)的最大容量 (字节)
NGC:年轻代(young)中当前的容量 (字节)
OGCMN:old代中初始化(最小)的大小 (字节)
OGCMX:old代的最大容量 (字节)
OGC:old代当前新生成的容量 (字节)
PGCMN:perm代中初始化(最小)的大小 (字节)
PGCMX:perm代的最大容量 (字节)
PGC:perm代当前新生成的容量 (字节)
S0:年轻代中第一个survivor(幸存区)已使用的占当前容量百分比
S1:年轻代中第二个survivor(幸存区)已使用的占当前容量百分比
E:年轻代中Eden(伊甸园)已使用的占当前容量百分比
O:old代已使用的占当前容量百分比
P:perm代已使用的占当前容量百分比
S0CMX:年轻代中第一个survivor(幸存区)的最大容量 (字节)
S1CMX :年轻代中第二个survivor(幸存区)的最大容量 (字节)
ECMX:年轻代中Eden(伊甸园)的最大容量 (字节)
DSS:当前需要survivor(幸存区)的容量 (字节)(Eden区已满)
TT: 持有次数限制
MTT : 最大持有次数限制
如果FGC 过多,有必要调整下jvm参数
[root@yy8 bin]# jstat -gcutil 3821 5000 10
S0 S1 E O P YGC YGCT FGC FGCT GCT
0.00 0.00 100.00 95.11 59.02 370 48.495 121 337.359 385.855
0.00 0.00 84.36 99.99 59.03 370 48.495 122 345.393 393.888
0.00 50.37 100.00 99.49 59.03 370 48.495 123 348.494 396.989
0.00 100.00 100.00 56.58 59.03 371 48.496 124 348.494 396.989
0.00 0.00 56.50 96.57 59.02 371 48.496 125 355.148 403.643
0.00 0.00 100.00 96.57 59.02 372 48.496 126 355.148 403.643
0.00 0.00 37.17 90.75 59.02 372 48.496 127 361.721 410.217
0.00 0.00 100.00 90.75 59.02 373 48.496 128 361.721 410.217
5000 是5秒 ,10是10次
参考范例
JAVA_OPTS="-server -Xms4g -Xmx4g -XX:PermSize=96m -XX:MaxPermSize=256m -Xmn2560m -XX:SurvivorRatio=10 -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX
:CMSMaxAbortablePrecleanTime=5000 -XX:+CMSClassUnloadingEnabled -XX:CMSInitiatingOccupancyFraction=80
发表评论
-
jprofiler官网
2012-10-17 18:36 1239jprofiler官网: http://www.ej-tec ... -
jstat使用
2012-10-17 18:36 788jstat使用 . jstat 1. j ... -
最大连接数配置和jvm内存配置 .
2012-10-31 18:27 1424最大连接数配置和jvm ... -
tomcat的maxThreads、acceptCount(最大线程数、最大列队数
2012-10-31 18:27 846tomcat的maxThreads、acceptCou ... -
tomcat最大连接数
2012-10-31 18:28 865tomcat最大连接数 错误信息: Maximum num ... -
java虚拟机启动的内存分配管理
2012-10-16 16:29 0java虚拟机启动的内存分 ... -
JAVA_OPTS简介(详细)
2012-10-17 18:38 1904JAVA_OPTS简介(详细) . JAVA_OPTS ,顾 ... -
JAVA_OPTS各参数的含意及配置
2012-10-16 16:18 0JAVA_OPTS各参数的含意及配置 Xms Xmx X ... -
tomcat运行期优化及问题解决方案(转)
2012-10-16 15:47 0tomcat运行期优化及问题 ... -
Tomcat连接线程超出(转)
2012-10-16 15:42 0Tomcat连接线程超出 今天下午突然发现系统不能访问,检查 ... -
tomcat中的server.xml元素详解
2018-05-13 18:55 286tomcat中的server.xml元素详解 server ... -
java.lang.OutOfMemoryError: Java heap space 解决方法2
2012-10-16 15:37 916java.lang.OutOfMemoryError: J ... -
java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转) .
2012-10-16 15:33 1109java.lang.OutOfMemoryError: Jav ... -
java.lang.OutOfMemoryError: Java heap space 的解决(摘抄1)
2012-10-16 15:26 700java.lang.OutOfMemoryError: J ... -
Tomcat常用优化技巧
2012-10-16 14:26 706Tomcat常用优化技巧 本文是就Tomc ... -
tomcat 优化解决方案(转载)
2012-10-16 14:01 807[/color] tomcat 优化解决方案 1. 如何加 ... -
tomcat服务器连接数问题解决 (转载)
2012-09-27 15:59 970问题描述: 有一个系统 ... -
ORACLE 外键禁用
2012-04-23 17:05 1399删除所有外键约束 Sql代码 1.select 'al ... -
数据线程监控
2012-04-22 11:55 858select count(*) from v$process; ... -
Oracle监控数据库性能的SQL汇总
2012-04-21 23:09 927Oracle监控数据库性能的SQL汇总 1. 监控事例的等 ...
相关推荐
jmap jstat等命令介绍,如何监控tomcat内存使用情况的资料
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解.docx
jmap、jstack、jstat组合使用定位jvm问题
本文档从实战角度出发,介绍jps、jmap、jstack和jstat这四个命令的常用方式。 jps 作用:获取java进程号,是后续命令的基础。 当一台服务器运行多个java进程时,该命令默认只输出进程号和应用名,可能无法区分哪个...
JVM内存结构 bin工具 jmap jstat
Java内存泄露_JVM监控工具介绍jstack_jconsole_jinfo_jmap_jdb_jstat
JVM监控工具介绍jstack, jconsole, jinfo, jmap, jdb, jstat.doc
本篇文章主要通过代码实例对java自带命令行工具jmap、jhat与jinfo的使用做出了详解,需要的朋友可以参考下
JVM、GC详解及调优,JVM、GC详解及调优,JVM、GC详解及调优
Kubernetes应用java程序无法使用jmap,jstack的解决方案.docx
NULL 博文链接:https://kennylee26.iteye.com/blog/1402260
jvm命令行工具,java性能优化,jdk命令工具, jcmd命令、jps命令、jmap命令、jstack命令、jinfo命令、jstat命令
jmap-perl 是 JMAP 代理服务器的 Perl 实现,Perl JMAP 后端可以与 IMAP 和 SMTP 服务器通许,允许在邮件系统上替换 JMAP 接口。为了高效,初始化实现要求所有服务器支持 CONDSTORE 扩展(RFC4551/FRC7162)。提供一个...
java使用JMAP定位代码内存泄漏
jmap 内存分析可视化工具,无须破解,解压即用。小编亲测。
JMAP 全称是 JSON 邮件访问协议。新基于 JSON 的 API 用于实现与邮件服务器之间的邮件同步,可用于替换 IMAP。如果服务器支持 IMAP ,很容易就可以扩展对 JMAP 的支持。 标签:JMAP
本文档来源于网络,简单的介绍了jconsole,jmap,jps 详细的介绍了jstat
JMAP-JS 是 JMAP 邮件,联系人和日历模型的 JavaScript 实现,是 JMAP 的 JavaScript 客户端。 标签:JMAPJS
与内存相关的性能问题和故障时Java应用程序经常要面对的,jmap命令提供了直观的方式帮助分析诊断此类问题。