JConsole使用

JConsole( Java- Monitoring and Management Console)是一种基于JMX的可视化监视管理工具。
属于jdk自带的软件,在目录%HOME%\bin\jconsole.exe

下面列举三个例子测试JConsole功能使用

查看eclipse运行情况

连接上eclipse程序
JConsole使用_第1张图片
查看Overviw掌握全局情况,包括内存、线程、class、cpu情况
JConsole使用_第2张图片
内存详细查询,这里我们查看Eden区使用情况,和Eden总大小
JConsole使用_第3张图片
查看Vm summary
JConsole使用_第4张图片
启动参数

VM arguments: 
-Dosgi.requiredJavaVersion=1.8 [email protected]/eclipse-workspace -XX:+UseG1GC -XX:+UseStringDeduplication -Dosgi.requiredJavaVersion=1.8 -Dosgi.dataAreaRequiresExplicitInit=true -Xms1024m -Xmx1024m -Xmn600m -XX:SurvivorRatio=5 -javaagent:lombok.jar -Xbootclasspath/a:lombok.jar 
Class path: 
C:\tools\software\eclipse\\plugins/org.eclipse.equinox.launcher_1.5.300.v20190213-1655.jar;lombok.jar
Library path: 
C:\tools\software\eclipse;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jdk1.8.0_45/bin/../jre/bin/server;C:/Program Files/Java/jdk1.8.0_45/bin/../jre/bin;C:/Program Files/Java/jdk1.8.0_45/bin/../jre/lib/amd64;C:\Program Files (x86)\NetSarang\Xftp 6\;C:\Program Files (x86)\NetSarang\Xshell 6\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Adaptiva\AdaptivaClient\bin\x32;C:\Program Files (x86)\Adaptiva\AdaptivaClient\bin\x64;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\tools\software\apache-maven-3.6.0\bin\;C:\Program Files\Java\jdk1.8.0_45\bin;C:\Program Files\TortoiseSVN\bin;c:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\Tools\Binn\;c:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\MinGW\bin;C:\tools\software\cmder;C:\Users\EDENJIL\AppData\Local\Microsoft\WindowsApps;C:\Program Files\Java\jdk1.8.0_45\bin;C:\Program Files\Java\jdk1.8.0_45\jre\bin;C:\Users\EDENJIL\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\EDENJIL\AppData\Local\Programs\Fiddler;C:\tools\software\eclipse;;.
Boot class path: 
C:\Program Files\Java\jdk1.8.0_45\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_45\jre\lib\rt.jar;C:\Program Files\Java\jdk1.8.0_45\jre\lib\sunrsasign.jar;C:\Program Files\Java\jdk1.8.0_45\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_45\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_45\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_45\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_45\jre\classes;lombok.jar

其中参数设置来自于eclipse配置文件eclipse.ini
JConsole使用_第5张图片

通过上述操作,我们可以大概掌握eclipse运行情况

查看自己写的程序运行情况

测试代码

public class JconsoleTest {
	
	static class OOMObejct {
		public byte[] b = new byte[64 * 1024];
	}

	public static void main(String[] args) throws InterruptedException {
		fill();
		// System.gc();
	}

	/**  
	 * 

Title: fill

*

Description:

*/
private static void fill() throws InterruptedException { List<OOMObejct> list = new ArrayList<>(); for (int i = 0; i < 1000; i++) { Thread.sleep(50); list.add(new OOMObejct()); } } }

需要设置运行虚拟机参数为:-Xms100m -Xmx100m -XX:+UseSerialGC

运行情况,Eden区不断地占满,对象不会被回收,将对象移到Old区,所有Eden区内存使用情况呈现V字形状
JConsole使用_第6张图片
Heap内存一直上升
JConsole使用_第7张图片

多线性死锁分析

由于这篇之前已经写过,参考分析java线程死锁

你可能感兴趣的:(jvm)