jvm-08.jvm调优工具Arthas[通俗易懂]

jvm-08.jvm调优工具Arthas[通俗易懂]jvm调优工具Arthas阿尔萨斯官方文档https://arthas.aliyun.com/doc/下载curl-Ohttps://arthas.aliyun.com/arthas-boot.jar启动java-jararthas-boot.jarFullGC_Problem01是我们刚启动的java进程importjava.math.BigDecimal;importjava.util.ArrayList;importjava.util.Date;import

大家好,又见面了,我是你们的朋友全栈君。

jvm调优工具Arthas阿尔萨斯

官方文档
https://arthas.aliyun.com/doc/

下载

curl -O https://arthas.aliyun.com/arthas-boot.jar

在这里插入图片描述

启动

java -jar arthas-boot.jar

FullGC_Problem01是我们刚启动的java进程

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

public class FullGC_Problem01 { 
   

	private static class CardInfo { 
   
		BigDecimal price = new BigDecimal(0.0);
		String name = "张三";
		int age = 5;
		Date birthdate = new Date();

		public void m() { 
   }
	}

	private static ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(50,
			new ThreadPoolExecutor.DiscardOldestPolicy());

	public static void main(String[] args) throws Exception { 
   
		executor.setMaximumPoolSize(50);

		for (;;) { 
   
			modelFit();
			Thread.sleep(100);
		}
	}

	private static void modelFit() { 
   
		List<CardInfo> taskList = getAllCardInfo();
		taskList.forEach(info -> { 
   
			// do something
			executor.scheduleWithFixedDelay(() -> { 
   
				// do sth with info
				info.m();

			}, 2, 3, TimeUnit.SECONDS);
		});
	}

	private static List<CardInfo> getAllCardInfo() { 
   
		List<CardInfo> taskList = new ArrayList<>();

		for (int i = 0; i < 100; i++) { 
   
			CardInfo ci = new CardInfo();
			taskList.add(ci);
		}

		return taskList;
	}

}

在这里插入图片描述

监控

输入1回车,将arthas挂上去

开始对FullGC_Problem1进程进行监控
在这里插入图片描述

dashboard

它会不断刷新

线程信息、内存信息、运行时环境
在这里插入图片描述

查看是否有线程死锁

thread -b

在这里插入图片描述

追踪方法的执行链路

trace FullGC_Problem01 modelFit

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138301.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • landsat8与sentinel2波段对比

    landsat8与sentinel2波段对比landsat8与sentinel2波段对比Landsat8波段对比哨兵2号,通常Landsat8OLI使用7、5、2或7、5、3,哨兵2号相对应的为12、8、2。Landsat7ETM+通常采用7、4、1。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计,将会带来全新…

    2022年7月23日
    12
  • HTML5+开发移动app教程1-环境搭建「建议收藏」

    HTML5+开发移动app教程1-环境搭建「建议收藏」前言本教程是介绍使用html5+(nativejs)和mui开发移动app(包括android和ios),感兴趣请继续,不感兴趣请跳过,大部分来自官方api,增加了一些自己的总结。HBuilder说明用h5+开发app的环境,也是ide,对eclipse做了深度定制,以前使用过eclipse或者myeclipse可以直接上手官网http://www.dclo

    2022年5月31日
    36
  • SQL SERVER拼接字符串(字符串中有变量)

    SQL SERVER拼接字符串(字符串中有变量)一、拼接字符串(整个字符串不分割)步骤:  1、首先在字符串的前后加单引号;  2、字符串中的变量以’’’+@para+’’’在字符串中表示;  3、若在执行时存在类型转换错误,则应用相应的类型转换函数,对变量进行类型转换(如cast()函数)。示例一:包含SQL拼接字符串的存储过程:CreateProcedureTest@TestIDintAsDeclare@sn…

    2022年6月17日
    396
  • selenium 常见面试题以及答案

    selenium 常见面试题以及答案selenium常见面试题以及答案 1.怎么判断元素是否存在?判断元素是否存在和是否出现不同,判断是否存在意味着如果这个元素压根就不存在,就会抛出NoSuchElementException这样就可以使用trycatch,如果catch到NoSuchElementException就返回false 2.如何判断元素是否出现?判断元素是否出现,存在两种情况,一种是该元素压根就没有,自…

    2022年6月20日
    31
  • 字符串正则匹配leetcode_动态规划的特点

    字符串正则匹配leetcode_动态规划的特点原题链接给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。‘.’ 匹配任意单个字符‘*’ 匹配零个或多个前面的那一个元素所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。示例 1:输入:s = “aa” p = “a”输出:false解释:”a” 无法匹配 “aa” 整个字符串。示例 2:输入:s = “aa” p = “a*”输出:true解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是

    2022年8月9日
    9
  • linux下的so、o、lo、a、la文件的区别

    linux下的so、o、lo、a、la文件的区别

    2022年3月5日
    77

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号