一、不断增加对象触发GC的代码

VM 参数:-Xms100m -Xmx100m -XX:+UseSerialGC

import java.util.ArrayList;
import java.util.List; public class Main { public static void main(String[] args) throws InterruptedException { while (true){
fillheap(1000); } } private static void fillheap(int count) throws InterruptedException {
List<OOMObjcet> list = new ArrayList<OOMObjcet>();
for (int i = 0; i<count ; i++){
Thread.sleep(50);
list.add(new OOMObjcet());
}
System.gc(); }
static class OOMObjcet{
public byte[] placeholder = new byte[64*1024];
}
}

效果图:

二、线程检测

代码:

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; public class ThreadDemo { public static void createBusyThread(){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
while (true);
}
},"testBusyThread");
thread.start();
} public static void createLockThread(final Object lock){
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
synchronized (lock){
try {
lock.wait();
}catch (Exception e){
e.printStackTrace();
}
}
}
},"testLockThread");
thread.start();
} public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); br.readLine();
createBusyThread();
br.readLine(); Object o = new Object();
createLockThread(o);
}
}

jconsole的图:

三、死锁代码

public class ThreadDieLock {
static class SynAddRunable implements Runnable{
int a,b; public SynAddRunable(int a, int b) {
this.a = a;
this.b = b;
} @Override
public void run() {
synchronized (Integer.valueOf(a)){
synchronized (Integer.valueOf(b)){
System.out.println(a+b);
}
}
}
} public static void main(String[] args) { for (int i = 0;i <100;i++){
new Thread(new SynAddRunable(1,2)).start();
new Thread(new SynAddRunable(2,1)).start();
}
}
}

二、VisualVM

VisualVM安装插件报错

https://blog.csdn.net/xionglangs/article/details/77603343

6、使用jconsole+VisualVM分析JVM的更多相关文章

  1. JVM诊断及工具笔记(4) 使用visualvm分析JVM堆内存泄漏

    在这里感谢最近一直阅读我文章的小伙伴,如果觉得文章对你有用,可以帮忙关注转载,需要的时候可以及时找到文章. 背景 今年Q3季度我们在推广业务方使用Iceberg,当时为了让不同业务线的用户可以使用自己 ...

  2. Jconsole与Jmx 分析JVM状况(下) 转

    出处: Jconsole与Jmx 分析JVM状况(下) 线程(ThreadMXBean ) 从 Jconsole 画面取得线程画面如下: 左下角列出了所以正在运行的线程.通过点击某个线程,右下脚可以看 ...

  3. Jconsole与Jmx 分析JVM状况(上) 转

    出处:Jconsole与Jmx 分析JVM状况(上) JVM 平台提供 Mbeans 说明 在 Java 2 平台 5.0 以上版本,有一组 API 可以让 Java 应用程序和允许的工具监视和管理  ...

  4. 利用jdk自带的运行监控工具JConsole观察分析Java程序的运行

    利用jdk自带的运行监控工具JConsole观察分析Java程序的运行 原文链接 一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能 ...

  5. VisualVM分析与HelloWorld、springBoot项目

    VisualVM分析与HelloWorld.springBoot项目 自从1995年第一个JDK版本JDKBeta发布,至今已经快25年,这些年来Java的框架日新月异,从最开始的Servlet阶段, ...

  6. 使用本地JConsole监控远程JVM(最权威的总结)

    问题背景   Tomcat经常崩溃crash,想看看JVM内存使用情况,就想到了用Jconsole监控,以前只是监控本地的JVM,这次要监控远程的,遇到了不少问题.   经过几个小时的努力,参考了众多 ...

  7. 使用本地JConsole监控远程JVM (转)

    问题背景   Tomcat经常崩溃crash,想看看JVM内存使用情况,就想到了用Jconsole监控,以前只是监控本地的JVM,这次要监控远程的,遇到了不少问题.   经过几个小时的努力,参考了众多 ...

  8. 大数据学习--day13(字符串String--源码分析--JVM内存分析)

    字符串String--源码分析--JVM内存分析 String 类的对象 , 是不可变的字符串对象呢 这个不可变很重要,之后要讲的intern()也离不开它的不可变性. https://www.cnb ...

  9. 第1篇--基于jdk7和jdk8分析 JVM的内存区域

     基于jdk7和jdk8分析 JVM的内存区域 目录前言1.什么是JVM2.JRE/JDK/JVM是什么关系3.JVM执行程序的过程4. JVM的生命周期5.JVM垃圾回收一.运行时数据区的组成1.程 ...

随机推荐

  1. JSTL核心标签库——重定向标签、URL处理标签、网页导入标签

    <c:redirect>重定向标签 相当于HttpServletResponse的sendRedirect()方法. <%@page contentType="text/h ...

  2. jboss-as- 7.1.1.Final配置jndi数据源

    初次使用jboss7.1.1.final部署项目,遇到了很多困难,最终通过查看官方文档和网上资料得以解决,特此记录一下. error information 2016-05-12 12:53:20 J ...

  3. 客户端连接caching-sha2-password问题

    ALTER USER 'root'@'localhost' IDENTIFIED BY '123' PASSWORD EXPIRE NEVER;ALTER USER 'root'@'localhost ...

  4. C# winform基础 1、Timer不起作用 2、 设置图片透明

    1.设置图片透明 this.pibox.BackColor = System.Drawing.Color.Transparent;  //将背景设置为透明 this.pibox.Parent = la ...

  5. 表格排序(tablesorter)

    1.在html页面的head中引用 <script src="/static/Bootstrap/js/jquery/jquery.tablesorter.min.js"&g ...

  6. Unity[C#] Reflection Use

      Reflection Reflection是C#程序员的一个最有力工具 最常用的例子来说明反射的用处是一个插件系统.假设你正在创建一个 接受用户创建 的扩展程序,有没有办法预先知道哪些方法这个扩展 ...

  7. [Spark Core] Spark 在 IDEA 下编程

    0. 说明 Spark 在 IDEA 下使用 Scala  & Spark 在 IDEA 下使用 Java 编写 WordCount 程序 1. 准备 在项目中新建模块,为模块添加 Maven ...

  8. mysql5.7 误删管理员root账户

    1.停止数据库,并在mysql配置文件my.cnf中添加skip-grant-tables参数到[mysqld]配置块中 2. 执行 systemctl start mysqld 3. 执行 mysq ...

  9. C# 生成随机订单号

    //生成固定位数的随机数 //ran.Next(999)生成的是1-999的随机数,不能保证位数是固定的. public static string GenerateOrderNo()        ...

  10. 3、爬虫之selenium模块

    一 selenium模块 什么是selenium?selenium是Python的一个第三方库,对外提供的接口可以操作浏览器,然后让浏览器完成自动化的操作. selenium最初是一个自动化测试工具, ...