JVM常用命令行工具学习总结

1. 搞清楚两个概念:

内存溢出(Out Of Memory):是指程序在申请内存时,没有足够的内存空间供其使用,就会出现out of memory。

内存泄露(Memory Leak):是指程序在申请内存后,无法释放已申请的内存空间。

2. 设置OOM时dump heap:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/opt/tomcat/logs

3. 设置打印GC信息:

-XX:+PrintGCDetails -Xloggc:/opt/tomcat/logs/gc.log

4. 查看java进程:

jps -v // -v表示输出jvm启动时的参数

5. 线上dump heanp,用到了jmp命令:

jmap -dump:format=b,file=7680.hprof 7680  //7680为java进程ID

6. 查看java进程实例对象数量以及大小,也是jmap:

jmap -histo 7680

输出示例如下:

num    #instances    #bytes       class name

1:       1732667      149468304   [C

2:         209826      136432064   [B

3:         364780        53321016   com.zws.beans.User

Total:     9076919      717049952

7. 获取java进程的线程状态:

jstack -l 7680 > 7680.stack

8. jstat查看Java进程各个内存区域的使用占比情况:

jstat -gcutil 7680

示例输出:

S0       S1      E       O        P        YGC    YGCT    FGC     FGCT     GCT

75.02  0.00   3.34  41.42  99.92  388     15.379   0           0.000     15.379

其中:

S0 S1:Survivor0,Survivor1空间占百分比。

E:Eden空间使用所占百分比。

O:老年代空间使用所占百分比。

P:永久代空间使用所占百分比。

YGC:自从进程启动以来发生的Minor GC次数(YGC表示Young GC)。

YGCT:自从进程启动以来发生的Minor GC总耗时(秒)。

FGC:自从进程启动以来发生的Full GC次数。

FGCT:自从进程启动以来发生的Full GC总耗时(秒)。

GCT:自从进程启动以来所有GC总耗时(秒)。

9. 查看最近一次GC的原因:

jstat -gccause 4882

示例输出:

S0       S1     E        O         P        YGC    YGCT     FGC     FGCT     GCT       LGGC                     GCC

75.02  0.00  3.34   41.42   99.92  388     15.379     0        0.000      15.379    Allocation Failure   No GC

其中:

LGGC:最近一次GC的原因。

其他同第8条。

原文地址:http://blog.51cto.com/wenshengzhu/2067084

时间: 2024-10-21 12:11:41

JVM常用命令行工具学习总结的相关文章

jdk自带常用命令行工具使用

下面是笔者整理的jdk自带的常用命令行工具的使用方法,全部原创,转载请注明出处,并贴上链接,谢谢! jps命令使用 jstat命令使用 jinfo命令使用 jmap命令使用 jhat命令使用 jstack命令使用 jcmd命令使用

mac os x 命令+10个常用命令行工具

很多朋友对osx下的命令行操作挠头,估计多数是在windows时代开始接触计算机的.有dos基础的应该是看看就 明白,而玩过Linux的应该是轻车熟路了.这个贴子希望能给见到命令行就头大的兄弟一些帮助,所涉及到的命令基本限于安装kext,修改plist,更 换核心 所碰到的操作.如果想进一步了解Unix的命令,再网上找些关于Linux命令的文章看,有很多.高手们就免看了,不过希望能来挑挑毛病,再来补充两句... ------------------------------------------

MacOS常用命令行工具

转自:https://blog.csdn.net/u014102846/article/details/77964493 https://ohmyz.sh/ https://github.com/robbyrussell/oh-my-zsh http://www.iterm2.cn/ https://github.com/robbyrussell/oh-my-zsh/wiki/themes iTerm2是Terminal的替代品,是一款比较小众的软件,比Terminal优秀太多了.下载官网为ht

SQLite学习手册(命令行工具)

工欲善其事,必先利其器.学好SQLite的命令行工具,对于我们学习SQLite本身而言是非常非常有帮助的.最基本的一条就是,它让我们学习SQLite的过程更加轻松愉快.言归正传吧,在SQLite的官方下载网站,提供了支持多个平台的命令行工具,使用该工具我们可以完成大多数常用的SQLite操作,就像sqlplus之于Oracle.以下列表给出了该工具的内置命令: 命令名 命令说明 .help 列出所有内置命令. .backup DBNAME FILE 备份指定的数据库到指定的文件,缺省为当前连接的

最常用的20个监控Linux系统性能的命令行工具

2015-12-27 iOS开发 对于每个系统管理员或网络管理员来说,每天要监控和调试 Linux 系统性能问题都是非常困难的工作.我已经有5年 Linux 管理员的工作经历,知道如何监控系统使其保持正常运行. 为此,我们编写了对于 Linux/Unix 系统管理员非常有用的并且最常用的20个命令行系统监视工具.这些命令可以在所有版本的 Linux 下使用去监控和查找系统性能的实际原因.这些监控命令足够你选择适合你的监控场景. 1.top — Linux 系统进程监控 top 命令是性能监控程序

K8s之kubectl命令行工具常用命令

kubectl管理 Kubectl是管理k8s集群的命令行工具,通过生成的json格式传递给apiserver进行创建.查看.管理的操作 注意:此处需要用到我们之前部署的K8s多节点的部署环境,如果还未部署的可以参考我的上篇文章:https://blog.csdn.net/JarryZho/article/details/104212822 常用命令行: `查看帮助命令` [[email protected] ~]# kubectl --help kubectl controls the Kub

[转]轻松学习Ionic (四) 修改应用图标及添加启动画面(更新官方命令行工具自动生成)

本文转自:http://blog.csdn.net/zapzqc/article/details/42237935 由于Ionic更新了命令行工具,以后修改应用图标和添加启动画面就简单了,最新方法见最下方: 应用图标: 1.在整个项目所在文件夹下创建res文件夹,里边再分别创建两个文件夹android和ios. 2.针对Android平台:将我们的要替换的启动图标放如android文件夹下.可以分别起名为:mdpi.png(48*48),hdpi(72*72).xhdpi(96*96).xxhd

JDK的命令行工具系列 (一) jps、jstat

概述 在我们进行故障定位和性能分析时, 可以使用Java Dump(也叫Dump文件)来帮助排查问题, 它记录了JVM运行期间的内存占用和线程执行等情况.其中Heap Dump文件是二进制格式, 它保存了某一时刻的系统信息.虚拟机属性.完整的线程Dump.所有类和对象的状态等, 是指定时刻的java堆栈的快照; Thread Dump文件是纯文本格式, 它保存了java应用程序各线程在某一时刻的运行位置. 在%JAVA_HOME%\lib目录下, 有一些诸如jps.exe.jstack.exe.

第十一章 Shell常用命令与工具(一)

本章节学习一些在编写Shell时的常用命令或工具及使用技巧.有人说Shell脚本是命令堆积的一个文件,按顺序去执行.还有人说想学好Shell脚本,要把Linux上各种常见的命令或工具掌握了,这些说法都没错.由于Shell语言本身在语法结构上比较简单,是面向过程编程,想实现复杂的功能有点强人所难!而且Shell本身又工作在Linux内核之上,在用户态调用Linux命令会很方面,所以大多数情况下我们都是依靠这些命令来完成脚本中的某些功能,比如文本处理.获取系统状态等等,然后通过Shell语法结构组织