JDK性能分析与故障处理-命令行
一、命令演示
登录主机:21
docker ps -a | grep 'hub.ecs.com:6999/open_pro.*open-pro-apple2'
docker exec -it ID /bin/bash
jps
jinfo 1
jinfo 1 | grep 'sun.java.command' //程序参数 main方法入参
jinfo 1 | grep 'Command line' //虚拟机系统参数,全局参数
jstat -gc 1 3s 10
jstat -gcutil 1 3s 10
#简单看下后续有实例分析
登录测试环境主机:60
docker ps -a | grep 'test.com:6999/open_2k'
docker exec -it ID /bin/bash
jstack 1 > stack1.txt
cat stack1.txt | grep 'java.lang.Thread.State'
cat stack1.txt | grep 'java.lang.Thread.State'| wc -l
cat stack1.txt | grep 'java.lang.Thread.State'|sort| uniq
线程状态:https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html
New、Runnable(Runnable/Running)、Blocked(Blocked/WAITING/TIMED_WAITING)、Dead
#需要工具分析,肉眼不可读
jmap -dump:format=b,file=dump2019.dump 1
二、实例分析(代码见分割线下方)
1.BigObject
VM Options:-Xmx30M -Xms30M
1.1命令行观察内存变化
jstat -gcutil 1 1s 200
1.2visualVM观察
2.SupperBigObject
VM Options:-Xmx30M -Xms30M
1.1命令行观察内存变化
jstat -gcutil 1 1s 200
jstat -gc 1 1s 200
1.2visualVM观察
3.HighCPU(分析stack)
3.1 jstack或visualVM查看栈快照
jstack 1 > HighCPU.txt
本地方便则使用visualVM更方便
3.2 top命令
a."top"命令查找cpu高的进程pid
b."top -Hp pid" 查找cpu高的线程
(mac )
java -jar jvm-1.0-jar-with-dependencies.jar
9551-9584
jstack 9551 > HighCPU.txt
9584->0x2570
grep '0x2570' HighCPU.txt
4.OutOffMem(分析dump)
jmap或visualVM查看栈快照
jmap -dump:format=b,file=dump2019.dump pid
----分割线----以下是练习的代码---
package zero.desk.jdkcommand; import java.util.ArrayList;
import java.util.List; /**
* @author Zero
* @since 2019-09-21.
* Description:
* VM Options:-Xmx30M -Xms30M
*/
public class BigObject {
public Object instance = null;
private static final int ONE_MB = 1024 * 1024; private byte[] bigSize = new byte[2 * ONE_MB]; public static void main(String[] args) throws InterruptedException {
Thread.sleep(12000);
for(int i=0;i<100;i++){
Thread.sleep(1000);
testGC();
}
} private static void testGC() {
BigObject objA = new BigObject();
BigObject objB = new BigObject();
objA.instance = objB;
objB.instance = objA;
// System.gc();
}
} //----
package zero.desk.jdkcommand; /**
* @author Zero
* @since 2019-09-21.
* Description:
*/
public class HighCPU {
public static void main(String[] args) {
new Thread(() -> {
double d = 2.3;
while (true) {
long i = 1;
d = d * d;
if (i % 100000 == 0) {
System.out.println(i);
}
}
}).start(); new Thread(() -> {
long l = 1;
while (true) {
l++;
if (l % 100 == 0) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start(); }
} //---
package zero.desk.jdkcommand; import java.util.ArrayList;
import java.util.List; /**
* @author Zero
* @since 2019-09-21.
* Description:
* VM Options:-Xmx50M -Xms50M
*/
public class OutOffMem { private static List<BigObject> GCRoot = new ArrayList<>(); public static void main(String[] args) throws InterruptedException {
Thread.sleep(12000);
for(int i=0;i<100;i++){
Thread.sleep(1000);
testGC();
}
} private static void testGC() {
BigObject objA = new BigObject();
BigObject objB = new BigObject();
objA.instance = objB;
objB.instance = objA;
//内存不会释放
GCRoot.add(objA);
GCRoot.add(objB);
System.gc();
}
} //----
package zero.desk.jdkcommand; /**
* @author Zero
* @since 2019-09-21.
* Description:
* VM Options:-Xmx30M -Xms30M
* 超过survivor的直接进入eden
* 超过年轻代的直接进入老年代
*/
public class SupperBigObject {
public Object instance = null;
private static final int ONE_MB = 1024 * 1024; // private byte[] bigSize = new byte[8 * ONE_MB];
private byte[] bigSize = new byte[9 * ONE_MB]; public static void main(String[] args) throws InterruptedException {
Thread.sleep(12000);
for(int i=0;i<100;i++){
Thread.sleep(1000);
testGC();
}
} private static void testGC() {
SupperBigObject objA = new SupperBigObject();
SupperBigObject objB = new SupperBigObject();
objA.instance = objB;
objB.instance = objA;
// System.gc();
}
}
JDK性能分析与故障处理-命令行的更多相关文章
- JVM性能监控与故障处理命令行工具
JDK命令行工具 Sun公司作为”礼物“赠送给JDK使用者的工具: 这些命令行工具大多是jdk/lib/tools.jar类库的一层薄包装,主要功能代码是在tools类库(不属于java的标准API) ...
- 监控Linux性能的18个命令行工具
监控 Linux 性能的 18 个命令行工具 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐 认识到监控和保 ...
- Linux性能分析工具top命令详解
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. top命令说明 [www.linuxidc.com@linuxidc-t-tomcat-1 ...
- x264源代码简单分析:x264命令行工具(x264.exe)
===================================================== H.264源代码分析文章列表: [编码 - x264] x264源代码简单分析:概述 x26 ...
- 监控 Linux 性能的 18 个命令行工具
http://www.oschina.net/translate/command-line-tools-to-monitor-linux-performance 1.Top-Linux进程监控 Lin ...
- [转载]监控 Linux 性能的 18 个命令行工具
转自:http://www.kuqin.com/shuoit/20140219/338066.html 对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一 ...
- 监控 Linux 性能的 18 个命令行工具[转]
对于系统和网络管理员来说每天监控和调试Linux系统的性能问题是一项繁重的工作.在IT领域作为一名Linux系统的管理员工作5年后,我逐渐认识到监控和保持系统启动并运行是多么的不容易.基于此原因,我们 ...
- JVM性能监控与故障处理命令汇总(jps、jstat、jinfo、jmap、jhat、jstack)
给一个系统定位问题的时候,知识.经验是关键基础,数据是依据,工具才是运用知识处理数据的手段 使用适当的虚拟机监控和分析的工具可以加快我们分析数据.定位解决问题的速度,本文主要介绍了几款服 务器上常用的 ...
- 监控 Linux 性能的 18 个命令行工具(转)
http://www.oschina.net/translate/command-line-tools-to-monitor-linux-performance?cmp&p=1# 1.Top- ...
随机推荐
- Python如何爬取实时变化的WebSocket数据【华为云技术分享】
一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变化的数据.如下图: Web 领域中,用于实现数据'实时'更新的手段有轮询和 WebSo ...
- Kafka 安装配置 及 简单实验记录
1. 下载二进制文件并解压,并修改 broker.id 的值 wget http://apache.fayea.com/kafka/0.10.0.0/kafka_2.10-0.10.0.0.tgz - ...
- luogu P1832 A+B Problem
题目背景 ·题目名称是吸引你点进来的 ·实际上该题还是很水的 题目描述 ·1+1=? 显然是2 ·a+b=? 1001回看不谢 ·哥德巴赫猜想 似乎已呈泛滥趋势 ·以上纯属个人吐槽 ·给定一个正整数n ...
- [TimLinux] asciinema Linux终端录制工具嵌入私有web中
yum install asciinema https://github.com/asciinema/asciinema-player # 下载asciinema-player.css, asciin ...
- HDU3896 Greatest TC(双联通分量+倍增)
Problem Description TC (Tian Chao) is magical place, as you all know...The railways and the rail-sta ...
- hibernate mysql中文检出无效
在学习ssh框架是发现,检索条件是英文时,sql就能按照条件过滤出数据,当我换成中文是,检索出来的数据就是空,最后发现没有设置数据库连接url的编码格式 1.数据库编码 COLLATE='utf8_g ...
- 面试BAT前先搞定这18道MySQL经典面试题(含答案解析)
一.MySQL的复制原理以及流程 (1)复制基本原理流程 1. 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog中: 2. 从:io线程——在使用start ...
- python学习-for
# 对字典的遍历. key-value# dict_my = {"class":"python17","goal":"翻倍&quo ...
- Ubuntu 18.04系统中不能ssh外网远程
前言 今天我不小心动了电插板,导致服务器断电,用远程命令开机,居然很长时间没反应,索性就亲自按电源键重启.服务器正常开机启动,ssh可以内网访问,远程命令内网有效果,就是外网不行.经过分析排查,是不是 ...
- poj 2513 Colored Sticks (trie树+并查集+欧拉路)
Colored Sticks Time Limit: 5000MS Memory Limit: 128000K Total Submissions: 40043 Accepted: 10406 ...