JMAP

JVM性能调优实践――JVM篇

匿名 (未验证) 提交于 2019-12-03 00:19:01
在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇 JVM性能调优实践――性能指标分析 。 JVM的调优和故障处理可以使用JDK的几个常用命令工具。因为本文是基于Docker容器内部的Springboot服务。需要调整一下docker容器的启动参数,才可以使用jmap等工具。jmap命令需要使用Linux的Capability的PTRACE_ATTACH权限。而Docker自1.10在默认的seccomp配置文件中禁用了PTRACE_ATTACH。目前使用的Docker version是17.04.0-ce。支持的Capability列表可以详看 runtime-privilege-and-linux-capabilities 。 调整Capability的方式也比较方便。可以如下直接在运行参数后面加 cap_add,cap-drop $docker run --cap-add=ALL --cap-drop=MKNOD ... 也可以在compose中增加: cap_add: - ALL cap_drop: - NET_ADMIN - SYS_ADMIN 在排查问题时,一般是先通过 JVM性能调优实践――性能指标分析 中的几个命令来分析基础的服务器状态和信息

Windows下jmap命令报错问题

匿名 (未验证) 提交于 2019-12-03 00:08:02
Attaching to core 17536 from executable heap, please wait... Error attaching to core file: Windbg Error: OpenDumpFile failed! sun.jvm.hotspot.debugger.DebuggerException: Windbg Error: OpenDumpFile failed! at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach0(Native Method) at sun.jvm.hotspot.debugger.windbg.WindbgDebuggerLocal.attach(WindbgDebuggerLocal.java:160) at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:673) at sun.jvm.hotspot.HotSpotAgent.setupDebuggerWin32(HotSpotAgent.java:569) at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:335) at sun.jvm

jmap -histo pid 输出的[C [B [I [S methodKlass constantPoolKlass含义

匿名 (未验证) 提交于 2019-12-02 23:56:01
JMAP 输出 [hadoop@DEV logs]$ jmap -histo 24527 | head -30 num #instances #bytes class name ---------------------------------------------- 1: 31939 98883072 [C 2: 8594 9461992 [B 3: 30326 4256232 <constMethodKlass> 4: 30326 3892592 <methodKlass> 5: 2719 3226344 <constantPoolKlass> 6: 2450 1948704 <constantPoolCacheKlass> 7: 2719 1869200 <instanceKlassKlass> 8: 27599 662376 java.lang.String 9: 836 442968 <methodDataKlass> 10: 8215 394320 org.apache.tomcat.util.buf.ByteChunk 11: 3012 366720 java.lang.Class 12: 11257 360224 java.util.HashMap$Entry 13: 3417 273360 java.lang.reflect.Method 14: 6763

JVM的监控工具之jmap

匿名 (未验证) 提交于 2019-12-02 23:49:02
参考博客: https://www.jianshu.com/p/a4ad53179df3 jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)。 jmap的作用并不仅仅是为了获取dump文件,它还可以查询finalize执行队列、Java堆和永久代的详细信息, 如空间使用率、当前用的是哪种收集器等。和jinfo命令一样,jmap有不少功能在Windows平台下都是受限的, 除了生成dump文件的-dump选项和用于查看每个类的实例、空间占用统计的-histo选项在所有操作系统都提供之外,其余选项都只能在Linux/Solaris下使用。 参数: option: 选项参数。 pid: 需要打印配置信息的进程ID。 executable: 产生核心dump的Java可执行文件。 core: 需要打印配置信息的核心文件。 server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。 remote server IP or hostname 远程调试服务器的IP地址或主机名。 no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。 heap: 显示Java堆详细信息 histo[:live]: 显示堆中对象的统计信息 clstats:打印类加载器信息

jvm 性能调优工具之 jmap

岁酱吖の 提交于 2019-12-02 21:42:54
概述 命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。 jmap 用法 参数: option: 选项参数。 pid: 需要打印配置信息的进程ID。 executable: 产生核心dump的Java可执行文件。 core: 需要打印配置信息的核心文件。 server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。 remote server IP or hostname 远程调试服务器的IP地址或主机名。 option no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。 heap: 显示Java堆详细信息 histo[:live]: 显示堆中对象的统计信息 clstats: 打印类加载器信息 finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象 dump:<dump-options>: 生成堆转储快照 F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效. help: 打印帮助信息 J<flag>: 指定传递给运行jmap的JVM的参数 示例一:no option 命令

JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解 转至元数据结尾

不打扰是莪最后的温柔 提交于 2019-12-02 18:16:06
OutOfMemoryError,内存不足 内存容量 螺纹死锁 锁争用(锁争用) Java进程消耗CPU过高 A,jps(Java虚拟机进程状态工具) jps主要用于输出JVM中运行的进程状态信息。语法格式如下: jps [选项] [主机ID] 如果不指定hostid就默认为当前主机或服务器。 命令行参数选项说明如下: -q不输出类名,Jar名和纳入主方法的参数 -m输出预设主方法的参数 -l输出main类或Jar的全限名 -v输出JVM的参数 例如下面: root @ ubuntu:/#jps -m -l 2458 org.artifactory.standalone.main.Main /usr/local/artifactory-2.2.5/etc/jetty.xml 29920 com.sun.tools.hat.Main主端口9998 /tmp/dump.dat 3149 org.apache.catalina.startup.Bootstrap启动 30972 sun.tools.jps.Jps -m -l 8247 org.apache.catalina.startup.Bootstrap启动 25687 com.sun.tools.hat.Main-端口9999 dump.dat 21711 mrf-center.jar B,jstack

虚拟机工具

若如初见. 提交于 2019-12-02 17:23:57
jps java process status jps -l 主 类 全 名 jps -m 运 行 传 入 主 类 的 jps -v 虚 拟 机 参 数 jstat 类 加 载 , 内 存 , 垃 圾 收 集 , jit 编 译 信 息 、 https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html jinfo 实 时 调 整 和 查 看 虚 拟 机 参 数 -XX:[+/-]option -XX:option=value jmap jmap -dump:formart=b,file=filepath pid jmap -histo pid jhat JVM heap Analysis Tool jstack jconsole 来源: https://www.cnblogs.com/snail-gao/p/11756547.html

Java GC机制及原理 项目实际遇到GC问题解决思路和经验总结

╄→гoц情女王★ 提交于 2019-12-02 07:49:58
1.什么是GC及基础知识介绍 GC(Garbage Collection) 简称垃圾收集 垃圾回收 JVM运行时数据区: 1.方法区存储类的信息(包括类的名称、方法信息、字段信息)、静态变量、常量以及编译器编译后的代码等 2.堆(heap)存储对象的信息,分为新生代(Eden,Survivor1,Survivor2)和老年代,永久代 3.程序计数器,存储的数据所占空间的大小不会随程序的执行而发生改变,因此,对于程序计数器是不会发生内存溢出现象(OutOfMemory)的 4.Java栈(stack)是Java方法执行的内存模型 5.本地方法栈则是为执行本地方法(Native Method)服务的 2. 垃圾回收策略 讲到垃圾回收,那么什么时候对象需要回收,如何去判断对象是存活还是死亡,我们采用引用计数法来判断对象是否存活,当一个对象被引用时,计数器值加1,当引用失效时减1. 强引用与弱引用的区别: 强引用:类似Object obj = new Object();只要强引用还存在,垃圾回收器不会收集被引用的对象 软引用:用来描述还有用但非必需的对象 通过可达性分析算法来判断对象是否需要被回收 垃圾回收策略有 标记清除法(会产生过多的内存碎片),复制法(内存使用率不高),标记整理法 垃圾收集器分类 Serial收集器:发展历史最悠久的收集器 ParNew收集器 Minor GC &

jvm 性能调优工具之 jmap

不羁的心 提交于 2019-12-02 06:06:08
概述 命令jmap是一个多功能的命令。它可以生成 java 程序的 dump 文件, 也可以查看堆内对象示例的统计信息、查看 ClassLoader 的信息以及 finalizer 队列。 jmap 用法 参数: option: 选项参数。 pid: 需要打印配置信息的进程ID。 executable: 产生核心dump的Java可执行文件。 core: 需要打印配置信息的核心文件。 server-id 可选的唯一id,如果相同的远程主机上运行了多台调试服务器,用此选项参数标识服务器。 remote server IP or hostname 远程调试服务器的IP地址或主机名。 option no option: 查看进程的内存映像信息,类似 Solaris pmap 命令。 heap: 显示Java堆详细信息 histo[:live]: 显示堆中对象的统计信息 clstats: 打印类加载器信息 finalizerinfo: 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象 dump:<dump-options>: 生成堆转储快照 F: 当-dump没有响应时,使用-dump或者-histo参数. 在这个模式下,live子参数无效. help: 打印帮助信息 J<flag>: 指定传递给运行jmap的JVM的参数 示例一:no option 命令

jps jmap 的使用

故事扮演 提交于 2019-12-01 16:49:38
第一部分: 源代码: 1 public class ObjectText { 2 int a=0; 3 public static void main(String[] args) { 4 ObjectText ot = new ObjectText(); 5 6 try { 7 Thread.sleep(100000); 8 } catch (InterruptedException e) { 9 10 } 11 } 12 } 1. jps (jdk提供的一个查看当前Java进程的小工具) 全名:Java Virtual Machine Process Status Tool 作用: 查看当前系统运行的java进程情况的进程号 2. jmap : 输出 JVM 堆上对象的信息 3. jmap -histo [:live] pid > log.txt : 打印heap中各类的实例数目,倒序排,并导成文件。加上live参数只打印活着的对象。 4. start. :查看打印的log.txt文件 第二部分: 1. javac : 将java源文件编译为class字节码文件 《java语言的编译器》 如: javac HelloWorld.java 运行Javac命令后,如果成功编译没有错误的话,会出现一个HelloWorld.class的文件。 2.java