[转帖]java并发-一些系统分析工具

java,并发,一些,系统分析,工具 · 浏览次数 : 0

小编点评

**内存分析教程** **1. 下载火焰图工具** - 请访问以下网站下载火焰图工具: - [GitHub](https://github.com/cobblau/Fl) **2. 安装工具** - 下载火焰图工具。 - 解压缩工具并移动到您系统中的适当目录。 - 创建一个名为 `flamegraph.sh` 的文件,并将工具的安装脚本包含进来。例如: ```bash #!/bin/bash # Download and install FlameGraph wget -O flamegraph.sh https://github.com/cobblau/Fl/releases/latest/flamegraph.sh chmod +x flamegraph.sh ``` - 运行:`./flamegraph.sh` **3. 配置 JVM 参数** - 在您运行火焰图之前,您需要设置 JVM 参数 `-XX:+PreserveFramePointer`。这可以帮助您收集更准确的火焰图。 **4. 运行分析** - 启动您的 Java 应用。 - 使用以下命令启动火焰图: ```bash perf record -a -g -p 65269 -F 99 -- sleep 30java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce PIDperf script | stackcollapse-perf.pl | flamegraph.pl > process.svg ``` **5. 观察火焰图** - 运行命令后,火焰图将生成一个 SVG 文件。 - 打开 SVG 文件以查看火焰图。 - 您可以使用任何可视化工具来分析火焰图。 **总结** 该教程说明如何安装和使用火焰图工具来分析 Java 应用程序的内存使用。

正文

https://segmentfault.com/a/1190000041541631

 

内存分析

java内存分析一般采用Java jmap dump下系统内存文件,使用 jmat 进行分析。

线程分析

线程栈一般通过 jstack 得到。

cpu分析

火焰图
arthas

火焰图做为cpu调试的神器,最早是openresty中被大神春哥开始应用,之后慢慢普及到各个语种当中,Java目前用的还不是很多。所以这里码字普及一下火焰图的安装和一些用法

安装步骤

首先需要下载火焰图工具
下载安装 FlameGraph
下载地址: https://github.com/cobblau/Fl...
这个是火焰图生成工具

安装之后

还需要安装一个工具:perf-map
这里的perf-map 需要Java版本至少1.7以上
下载地址:http://www.github.com/jvm-pro...

安装命令

cmake.
make

安装完之后需要设置jvm 参数

-XX:+PreserveFramePointer jvm参数

之后就是采集结果阶段:

使用命令之后就是采集结果阶段:
使用命令
perf record -a -g -p 65269 -F 99 -- sleep 30
java -cp attach-main.jar:$JAVA_HOME/lib/tools.jar net.virtualvoid.perf.AttachOnce PID
perf script | stackcollapse-perf.pl | flamegraph.pl > process.svg

火焰图生成结果:

条越长越耗cpu,每一条点击进去都可以看到自己的子调用栈

与[转帖]java并发-一些系统分析工具相似的内容:

[转帖]java并发-一些系统分析工具

https://segmentfault.com/a/1190000041541631 内存分析 java内存分析一般采用Java jmap dump下系统内存文件,使用 jmat 进行分析。 线程分析 线程栈一般通过 jstack 得到。 cpu分析 火焰图arthas 火焰图做为cpu调试的神器

[转帖]线上Java 高CPU占用、高内存占用排查思路

一、前言 处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运行缓慢这一问题,提供该问题的排查思路,从而定位出问题的代码点,进而提供解决该问题的思路。 二、分析

[转帖]JVM(3)之垃圾回收(GC垃圾收集器+垃圾回收算法+安全点+记忆集与卡表+并发可达性分析......)

《深入理解java虚拟机》+宋红康老师+阳哥大厂面试题2总结整理 一、堆的结构组成 堆位于运行时数据区中是线程共享的。一个进程对应一个jvm实例。一个jvm实例对应一个运行时数据区。一个运行时数据区有一个堆空间。 java堆区在jvm启动的时候就被创建了,其空间大小也就被确定了(堆是jvm管理的最大

[转帖]修改jmeter内存配置(win&mac&linux)

目录 一、背景: 二、win环境下修改jmeter内存 三、mac&linux环境下修改jmeter内存 四、验证内存是否修改成功 一、背景: 在进行大数据、高并发压测的过程性,有时会遇上JMeter卡死现象,使得测试无法进行,查看日志显示:java.lang.OutOfMemoryError: J

[转帖]java中方法不要写太长的真正原因

https://www.iteye.com/blog/enetor-976070 java中一般建议一个方法不要写的过长,不方便维护和阅读是其中的一个原因,但是其真正性能的原因大家知道吗? 我们知道,JVM一开始是以解释方式执行字节码的。当这段代码被执行的次数足够多以后,它会被动态优化并编译成机器码

[转帖]JVM常用命令和性能调优建议 [Could not create the Java virtual machine]

https://blog.51cto.com/u_6215974/4938440 一、查看jvm常用命令 jinfo:可以输出并修改运行时的java 进程的opts。 jps:与unix上的ps类似,用来显示本地的java进程,可以查看本地运行着几个java程序,并显示他们的进程号。 jstat:一

[转帖]一文了解 Java 中的构造器

https://my.oschina.net/u/4526289/blog/5577621 摘要:Java 也采用了构造器,并且还提供了一个垃圾收集器(garbage collector),当不再使用内存资源的时候,垃圾收集器会自动将其释放。 本文分享自华为云社区《一文带你了解 Java 中的构造器

[转帖]【JVM】类加载机制

什么是类的加载 将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供

[转帖]生成并配置https本地证书

https://www.cnblogs.com/linyufeng/p/14591357.html 1. 生成证书 https证书可以在网上申请免费证书 https://freessl.cn/ ,也可以本地生成.本地生成可以使用keytools和mkcert, keytools是一个Java数据证书

[转帖]SpringBoot 3.0最低版本要求的JDK 17,这几个新特性不能不知道!

2022-02-27 分类:Java 阅读(1872) 评论(0) GitHub 24k Star 的Java工程师成神之路,不来了解一下吗! 最近,有很多人再传说 SpringBoot要出3.0的版本了,并且宣布不再支持 Java 8,最低要求是 Java 17了。 其实,早在2021年9月份,关