JVM
文章平均质量分 82
JAVA虚拟机
枫陵
这个作者很懒,什么都没留下…
展开
-
JVM监控及诊断工具--- Arthas
背景Jvisualvm和Jprofiler功能强大,但是也有个缺点,就是都必须在服务端项目进程中配置相关的监控参数。然后工具通过远程连接到项目进程,获取相关的数据。这样就会带来一些不便,比如线上环境的网络是隔离的,本地的监控工具根本连不上线上环境。那么有没有一款工具不需要远程连接,也不需要配置监控参数,同时也提供了丰富的性能监控数据呢?这就推出了阿里巴巴开源的JVM监控及诊断工具--- Arthas。官方网址Arthas - Alibaba Java Diagnostic Tool安装原创 2022-04-21 20:18:50 · 1054 阅读 · 0 评论 -
Windows系统下,Arthas启动出错:Exception in thread “main“ java.lang.IllegalArgumentException: Can not find to
出错详情:Exception in thread "main" java.lang.IllegalArgumentException: Can not find tools.jar under java home: C:\Program Files\Java\jre1.8.0_201, please try to start arthas-boot with full path java. Such as /opt/jdk/bin/java -jar arthas-boot.jar at...原创 2022-04-20 22:54:15 · 3753 阅读 · 0 评论 -
内存泄漏的8种情况(附代码示例)
一. 内存泄漏(memroy leak)严格来说,只有对象不会再被程序用到了,但是GC又不能回收它们的情况,才叫内存泄漏宽泛的讲,实际情况中很多时候一些不太好的实践会导致对象的生命周期变得很长甚至导致OOM,也叫“内存泄漏”申请了内存用完了不释放,如申请了1024M内存,分配了512M内存一直不回收,那么可用内存就只有512M,仿佛泄漏掉一部分。二. 内存溢出(out of memory)申请内存时,没用足够的内存可以使用。三. 两者的关系内存泄漏的增多,最终会导致内存溢出。.原创 2022-04-20 18:44:33 · 18425 阅读 · 0 评论 -
JVM监控及诊断工具---MAT
MAT (Java堆内存分析器,用于查找内存泄漏和查看内存消耗情况,可快速生成内存泄漏报表,对于堆内存的分析较Visual VM更强大)点击MemoryAnalyze.exe打开生成堆快照文件(File->AcquireHeap Dump)读取堆快照文件(File->Open Heap Dump)1. 浅堆与深堆Shallow Heap(浅堆):指一个对象所占用的内存,包含对象引用、对象头、数据类型。(字节大小需向8字节对齐,即需补为能被8整除)Ret...原创 2022-04-20 21:44:11 · 513 阅读 · 0 评论 -
JVM监控及诊断工具(命令行篇)
1. jps: 查看正在运行的Java进程jps8848 表示Jps本身的进程,11380表示idea的进程,820表示Launcher启动类进程 8492表示正在运行的ScannerTest Java进程2. jstat: 查看JVM统计信息jstat -class PID(监控Java进程) Loaded表示加载类的个数,Bytes表示加载类所占字节数Unloaded表示卸载类的个数,Bytes表示卸载类所占字节数Time表示花费的总体时间jstat...原创 2022-04-19 15:28:28 · 284 阅读 · 0 评论 -
JVM监控及诊断工具--- JProfiler
JProfiler(功能远强大于MAT,是IDEA中的插件,收费)安装好JProfiler后,可在IDEA中同时安装插件JProfiler,进行配置点击蓝色图标,即可以JProfiler的方式启动程序JProfier数据采集方式分为两种: Sampling(样 本采集)和Instrumentation (重构模式)Instrumentation: 这是JProfiler全功能模式。在dlass加载之前,JProfier把相关功能代码写入到需要分析的clas...原创 2022-04-20 21:47:30 · 1273 阅读 · 0 评论 -
JVM之堆空间
堆内存细分:Java7 及之前堆内存逻辑上分为三部分:新生区+养老区+永久区 Young Generation Space 新生区 ,又被划分为Eden区和Survivor区 Old generation space 养老区 Permanent Space 永久区 Java 8及之后堆内存逻辑上分为三部分:新生区+养老区+元空间 Young Generation Space 新生区,又被划分为Eden区和Survivor区 Old generation space 养老区 ..原创 2022-03-23 22:27:26 · 480 阅读 · 0 评论