- 浏览: 342973 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1278jprofiler官网: http://www.ej-tec ... -
jstat使用
2012-10-17 18:36 828jstat使用 . jstat 1. j ... -
最大连接数配置和jvm内存配置 .
2012-10-31 18:27 1457最大连接数配置和jvm ... -
tomcat的maxThreads、acceptCount(最大线程数、最大列队数
2012-10-31 18:27 891tomcat的maxThreads、acceptCou ... -
tomcat最大连接数
2012-10-31 18:28 898tomcat最大连接数 错误信息: Maximum num ... -
java虚拟机启动的内存分配管理
2012-10-16 16:29 0java虚拟机启动的内存分 ... -
JAVA_OPTS简介(详细)
2012-10-17 18:38 1948JAVA_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 337tomcat中的server.xml元素详解 server ... -
java.lang.OutOfMemoryError: Java heap space 解决方法2
2012-10-16 15:37 993java.lang.OutOfMemoryError: J ... -
java.lang.OutOfMemoryError: Java heap space错误及处理办法(收集整理、转) .
2012-10-16 15:33 1163java.lang.OutOfMemoryError: Jav ... -
java.lang.OutOfMemoryError: Java heap space 的解决(摘抄1)
2012-10-16 15:26 740java.lang.OutOfMemoryError: J ... -
Tomcat常用优化技巧
2012-10-16 14:26 752Tomcat常用优化技巧 本文是就Tomc ... -
tomcat 优化解决方案(转载)
2012-10-16 14:01 849[/color] tomcat 优化解决方案 1. 如何加 ... -
tomcat服务器连接数问题解决 (转载)
2012-09-27 15:59 1028问题描述: 有一个系统 ... -
ORACLE 外键禁用
2012-04-23 17:05 1434删除所有外键约束 Sql代码 1.select 'al ... -
数据线程监控
2012-04-22 11:55 902select count(*) from v$process; ... -
Oracle监控数据库性能的SQL汇总
2012-04-21 23:09 957Oracle监控数据库性能的SQL汇总 1. 监控事例的等 ...
相关推荐
JVM性能调优监控工具jps、jstack、jmap、jhat、jstat使用详解 本文将对一些常用的 JVM 性能调优监控工具进行介绍,包括 jps、jstack、jmap、jhat、jstat 等工具的使用详解。这些工具对于 Java 程序员来说是必备的,...
一、`jstat` 命令详解 `jstat`命令允许开发者查看JVM的各种统计数据,包括堆内存的使用情况、类加载数量、垃圾收集统计等。其基本格式如下: ```bash jstat [-命令选项] [vmid] [间隔时间(毫秒)] [查询次数] ``` ...
### JVM监控工具详解 在Java开发与运维领域,掌握有效的监控工具对于确保应用程序的稳定运行至关重要。本文将深入探讨六种关键的JVM监控工具——`jstack`, `jconsole`, `jinfo`, `jmap`, `jdb`, `jstat`——它们...
Java2语言命令详解 在Java开发中,理解并掌握各种命令行工具是至关重要的,特别是对于初学者和专业开发者来说。Java2语言命令主要指Java Development Kit (JDK) 提供的一系列命令行工具,它们在Java程序的编译、...
Java2 语言命令详解 Java2 语言是Java平台的核心组成部分,它提供了丰富的类库、强大的性能优化以及多线程支持。在Java2环境中,掌握各种命令行工具是每个开发者必备的技能。本文将深入探讨Java2语言命令的使用方法...
**JDK命令详解** 在Java开发中,JDK(Java Development Kit)是不可或缺的一部分,它提供了编译、运行和调试Java程序所需的所有工具。本文将深入解析JDK中的一些核心命令,帮助开发者更好地理解和利用这些工具。 #...
Java 2语言命令详解 Java 作为一门广泛使用的编程语言,其命令行工具在开发、编译、运行和管理Java程序中起着至关重要的作用。本文将深入探讨Java 2平台(J2SE)下的主要命令及其用法,帮助开发者更好地理解和掌握...
Java 2 应用命令详解 在 Java 开发和运行环境中,掌握各种命令行工具是至关重要的。Java 2 应用命令主要指的是用于管理、编译、运行和调试 Java 程序的一系列命令。这些命令使得开发者能够在不同的操作系统上高效地...
Java开发线上问题排查命令详解 Java开发中的线上问题排查命令详解是指在Java开发中使用的一些常用命令来排查和解决线上问题。这些命令主要来自JDK的lib/tools.jar类库,安装JVM时会被安装到机器的bin目录下。 以下...
7. **性能分析命令**:`jps`显示Java进程,`jstat`用于监视JVM统计信息,`jmap`提供内存映射和堆dump,`jhat`分析heap dump,这些工具帮助开发者优化程序性能。 8. **JVM调优**:Java2语言命令详解可能还会涵盖JVM...
### JDK内置工具使用技巧详解 #### 一、引言 JDK(Java Development Kit)作为Java编程语言的核心组件,不仅提供了必要的编译、调试及文档工具,还配备了一系列用于监控和诊断应用程序运行状态的工具。本文将详细...
【Java JVM内存监控工具详解】 Java JVM内存监控是优化Java应用程序性能的关键环节,而VisualVM作为一款集成多种JDK命令行工具的可视化平台,提供了强大的分析功能。它包含的工具如jps、jstat、jmap、jinfo、jstack...
### Java调试指南:详解关键调试工具与方法 #### 概述 本文档旨在提供一份全面且深入的Java应用问题调试指南。随着Java平台标准版(Java Platform, Standard Edition,简称Java SE)的发展与普及,软件开发者们面临...
#### 二、工具详解 ##### 1. jps - JVM Process Status Tool **用途**:列出当前系统中正在运行的所有HotSpot虚拟机进程,并显示每个进程的PID及主类名。 **命令格式**: ``` jps [options] [hostid] ``` **执行...
### JDK 自带 VM 分析工具详解 在 Java 开发领域,深入理解并有效利用 Java 开发工具包(JDK)自带的各种虚拟机(VM)分析工具对于提高应用程序性能至关重要。本文将详细介绍 JDK 自带的几个核心 VM 分析工具:jps...
本文将详细介绍JVM自带的一些核心监控工具,包括jstack、jconsole、jinfo、jmap、jdb和jstat等命令的使用方法。 #### jstack **概述:** jstack是一个强大的诊断工具,主要用于获取JVM中的线程快照。当Java程序...
### JVM内存监控工具详解 #### 引言 Java Virtual Machine (JVM) 是运行 Java 应用程序的核心组件,其性能直接影响应用的响应速度和稳定性。JVM 的内存管理是性能优化的关键,尤其是在高并发环境下,合理的内存...
### 内存泄漏图文解决方案详解 #### 一、引言 在软件开发过程中,内存泄漏是一种常见的性能问题,尤其在高并发环境下更为突出。本文将以一个具体的线上实例为背景,介绍如何逐步排查并解决内存泄漏问题。通过...
【Linux命令详解】 1. 创建文件的命令有多种方式: - `touch a.txt`:创建一个名为a.txt的新文件,如果文件已存在,将更新其时间戳。 - `vi a.txt`:使用vi(Visual Editor)编辑器创建新文件a.txt,进入编辑模式...