VisualVM

Java自带的性能监测工具之jhat

淺唱寂寞╮ 提交于 2020-08-14 22:51:21
原文:https://my.oschina.net/wangmengjun/blog/864838 本文继续介绍Java自带的性能监测工具,本文使用jhat (Java Heap Analyse Tool)工具来玩~ jhat (Java Heap Analyse Tool) 是用来分析java堆的命令,可可以将对中的对象以html的形式展示,包括对象的数量、大小等信息,并支持对象查询语言 (OQL)。 先使用jps -l查看有哪些进程~ [root@dev03 ~]# jps -l 10838 sun.tools.jps.Jps 13823 org.apache.hadoop.hdfs.server.namenode.NameNode 13588 org.apache.hadoop.yarn.server.nodemanager.NodeManager 21983 org.apache.catalina.startup.Bootstrap 13941 org.apache.hadoop.hdfs.server.datanode.DataNode 13318 org.apache.hadoop.yarn.server.resourcemanager.ResourceManager 14097 org.apache.hadoop.hdfs.server.namenode

java visualVM 使用

孤人 提交于 2020-08-13 02:17:00
shell 脚本的参数配置 JPDA_OPTS="-agentlib:jdwp=transport=$JPDA_TRANSPORT,address=$JPDA_ADDRESS,server=y,suspend=$JPDA_SUSPEND" // 内存分析 JAVA_OPTS="-Dcom.sun.management.jmxremote.port=8999 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false" Java visualVm 操作 1.链接配置 2.常用操作 2.1 内存泄漏 内存泄漏:对象不在回收树上,无法回收。 内存溢出:内存对象太多,内存放不下。 根据dump日志,查询占用最多的对象,然后分析 2.2 线程泄漏和线程移除 线程泄漏:指系统中动态分配的线程,在使用完毕后未关闭,导致相关资源未释放,结果导致一直占据系统资源,直到系统结束。直白点说,就是线程使用完毕后没有关闭或者正常停止,即线程泄漏。 线程溢出:指系统中达到了线程分配的极限,无法再创建新的线程时,还在收到新创建线程的请求,无法创建的一种状态,即线程溢出。 线程高位运行,就是问题。 查看最多的线程,然后判断,看代码。 2.3 查看方法耗时 启动 VisualVM,在应用程序窗口

Java Agent(上)

无人久伴 提交于 2020-08-12 01:57:33
1、java agent是什么? ---》对用户透明,不侵入用户业务代码。让java虚拟机加载agent jar 2、java agent有什么用? --->应用场景例如:调用链追踪项目,在用户无感知的情况下,记录日志。目前业内使用该技术的有,SkyWalking,Pinpoint(这个监控的粒度更小) -各个 Java IDE 的调试功能,例如 eclipse、IntelliJ ; -热部署功能,例如 JRebel、XRebel、 spring-loaded; -各种线上诊断工具,例如 Btrace、Greys,还有阿里的 Arthas; -各种性能分析工具,例如 Visual VM、JConsole 等 3、java agent的实现原理? https://zhuanlan.zhihu.com/p/147375268 4、 入门案例 4.1、 如何制造自己第一个java agent jar包 4.1.1、 第一步:我们需要一个插件来帮助我们生成带特定格式的MAINIFEST.MF的jar 4.1.2、 第二步:在启动项目的时候,在jvm参数中添加 -javaagent: *\ving-agent-0.0.1-SNAPSHOT.jar (在jvm上先加载agent包) (偷偷地问)特定格式的MAINIFEST.MF是怎样的?需要包括下面的内容 Manifest-Version:

JVM的堆内存泄漏排查-性能测试

狂风中的少年 提交于 2020-08-11 06:27:01
JVM异常说明 https://testerhome.com/articles/24259 一文中已介绍了,JVM每个运行时区域——程序计数器 、Java虚拟机栈、本地方法栈、Java堆、方法区、直接内存发生OutOfMemoryError的不同原因和不同错误信息。 Java堆,是线程共享内存,几乎所有的对象实例以及数组都应在堆上分配。如下堆的内存泄漏错误也是我们常常遇到的 java.lang.OutOfMemoryError: Java heap space 工具VisualVM的介绍 使用VisualVM排查堆内存泄漏 查看GC 老年代Old和年轻代Eden区在不断增长,几乎已满。Full GC次数增多,内存没有有效释放。这是内存泄漏的明显迹象 查看系统日志 已有Full GC的日志,紧接着开始报错OutOfMemoryError 分析Heap Dump 导入Dump后,可以看到占用内存最大的类和实例——OOMMonitor类中的placeholder变量 示例代码 public class OOMMonitor { static class OOMobject { public byte[] placeholder = new byte[64 * 1024]; } public static void fillHeap(int num) throws

Java程序员必备的11大Intellij插件

陌路散爱 提交于 2020-08-10 10:02:49
善用Intellij插件可大幅提升我们的效率 以下是我用过不错的Intellij插件 1. .ignore 地址: https://plugins.jetbrains.com/plugin/7495--ignore 生成各种ignore文件,一键创建git ignore文件的模板,免得自己去写 截图: 2. lombok 地址: https://plugins.jetbrains.com/plugin/6317-lombok-plugin 支持lombok的各种注解,从此不用写getter setter这些 可以把注解还原为原本的java代码 非常方便 截图: 3. p3c 地址: https://plugins.jetbrains.com/plugin/10046-alibaba-java-coding-guidelines 阿里巴巴出品的java代码规范插件 可以扫描整个项目 找到不规范的地方 并且大部分可以自动修复 更多可看: https://github.com/alibaba/p3c/tree/master/idea-plugin 4. FindBugs-IDEA 地址: https://plugins.jetbrains.com/plugin/3847-findbugs-idea 检测代码中可能的bug及不规范的位置,检测的模式相比p3c更多, 写完代码后检测下

有了这款可视化工具,Java 应用性能调优 so easy。。。

我是研究僧i 提交于 2020-08-10 02:04:27
JVisualVM 简介 案例分析 准备模拟内存泄漏样例 使用JVisualVM分析内存泄漏 JVisualVM 远程监控 Tomcat JVisualVM 简介 VisualVM 是Netbeans的profile子项目,已在JDK6.0 update 7 中自带,能够监控线程,内存情况,查看方法的CPU时间和内存中的对 象,已被GC的对象,反向查看分配的堆栈(如100个String对象分别由哪几个对象分配出来的)。在JDK_HOME/bin(默认是C:\Program Files\Java\jdk1.6.0_13\bin)目录下面,有一个jvisualvm.exe文件,双击打开,从UI上来看,这个软件是基于NetBeans开发的了。 VisualVM 提供了一个可视界面,用于查看 Java 虚拟机 (Java Virtual Machine, JVM) 上运行的基于 Java 技术的应用程序的详细信息。 VisualVM 对 Java Development Kit (JDK) 工具所检索的 JVM 软件相关数据进行组织,并通过一种使您可以快速查看有关多个 Java 应用程序的数据的方式提供该信息。您可以查看本地应用程序或远程主机上运行的应用程序的相关数据。此外,还可以捕获有关 JVM 软件实例的数据,并将该数据保存到本地系统,以供后期查看或与其他用户共享。 双击启动

程序员使用IDEA这些插件后,办公效率提升100%(持续更新中)

自闭症网瘾萝莉.ら 提交于 2020-08-09 02:42:39
IDEA一些不错的插件分享 目录 IDEA一些不错的插件分享 插件集合 CamelCase Translation LiveEdit MarkDown Navigator Jrebel CheckStyle-IDEA Alibaba Java Coding Guidelines Ideavim Maven Helper FindBugs-IDEA GsonFormat Key promoter X .ignore JVM Debuger Memory View CMD Support Batch Scripts Support BashSupport Docker integration JMH plugin ANSI Highlighter Ideolog RestfulToolkit CodeGlance Lombok plugin activate-power-mode Background Image Plus Iedis Mongo Plugin VisualVM Launcher GenerateAllSetter MyBatisCodeHelperPro Easy Code IDEA Mind Map SequenceDiagram Material Theme UI String Manipulation JUnit Generator V2.0 设置方法 插件集合

JAVA和GO真香!谁用谁知道!

馋奶兔 提交于 2020-08-08 20:51:31
  今天面了个32岁的Java程序员,各方面都挺好,问啥都会,对于JVM调优问题,答得还行,最后问了个Go语言GC问题,就答不上来了,走时几乎落泪...唉!    细想想...   当面试官向你提问JVM的实战问题时,你是否感觉到无所适从?   想解决生产环境中的GC问题,你是否感觉到狗咬刺猬,无处下嘴?   面对JVM的海量参数,你是否感觉到迷茫无助?   看过很多的JVM文章,但当遇到了生产环境中真实问题的时候,你是否依然不知道如何进行分析排查?   如果是这样,我觉得我们大家先想清楚在 金九银十 这个时间段“ 自己想要什么 ”最为重要      我认为是 “实战” !    “实战” 可以让我们 快速消除痛点,解决面试,积累实战经验 。   在这里小编推荐你,拿出2小时的时间   赶紧参加【马士兵老师】的 「JVM实战调优」 集训营   马老师带你横扫一切关于JVM的面试问题,吊打所有敢于提问JVM的面试官。   让你在简历中,填写上JVM调优经历,为升职加薪添上浓墨重彩的一笔。    点开看...       下面这些内容,全网首讲,你从未听过,且只讲一次   Go语言内存管理和Java的异同,Rust语言为什么不需要GC?   Golang的内存管理和Jvm有何不同?   Golang的gc算法和Jvm有何不同?   Golang的内存调优应该如何做?  

Visual VM 垃圾回收性能监控开源插件, 支持Java 8和VisualVM 2.0

拈花ヽ惹草 提交于 2020-08-07 10:27:18
Visual VM 垃圾回收性能监控插件, 加入对最新版VisualVM 2.0的支持, 做了中英双语支持. 源码地址: https://github.com/beansoftapp/gcperf 原始项目: https://github.com/bitcharmer/gcperf 原始介绍: https://dzone.com/articles/visualvm-gcviewer-plugin 下载 gcperf.nbm 中文多语言版 gcperf_en.nbm 英文版 Java 8(VisualVM 1.0)适用 VisualVM 2.0适用 术语简单解释: 参考 JDK 源码: AdaptiveSizePolicy.Design.txt 活动区 liveSpace = baseFootprint + oldAlive + youngAlive 闲置区 freeSpace = promoSize + edenSize 重要说明: 此项目仅支持 OpenJDK 和 Hotspot, 通过使用 JVMStat API 来读取内置的 HotSpot 计数器. 因为某些原因, 新的并行GC ( -XX:+UseParNewGC ) 不再提供和旧的并行扫描收集器( -XX:+UseParallelGC )相同的计数器, 所以新版下只能看到 GC 暂停时间和已提升对比已存活两个图表 .

干货分享丨jvm系列:dump文件深度分析

岁酱吖の 提交于 2020-08-06 07:42:09
摘要: java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢? JVM dump java内存dump是jvm运行时内存的一份快照,利用它可以分析是否存在内存浪费,可以检查内存管理是否合理,当发生OOM的时候,可以找出问题的原因。那么dump文件的内容是什么样的呢?我们一步一步来 获取JVM dump文件 获取dump文件的方式分为主动和被动 i.主动方式: 1.利用jmap,也是最常用的方式:jmap -dump:[live],format=b,file= 2.利用jcmd,jcmd GC.heap_dump 3.使用VisualVM,可以界面操作进行dump内存 4.通过JMX的方式 MBeanServer server = ManagementFactory.getPlatformMBeanServer(); HotSpotDiagnosticMXBean mxBean = ManagementFactory.newPlatformMXBeanProxy(server, "com.sun.management:type=HotSpotDiagnostic", HotSpotDiagnosticMXBean.class); mxBean