zoukankan      html  css  js  c++  java
  • Visualvm jvisualvm1.8详情使用

    转:https://blog.csdn.net/qq_31075763/article/details/98584858

    0.工具地址:jdk安装目录injvisualvm.exe

    1.插件安装

    工具->插件 可用插件 选择 Visual GC和BTrace Workench 两项安装。
    自带的插件url已经不可用了,我们需要在设置中更改url,查询对应版本url,填写完成后可以安装插件,比如visual gc常用插件。
    2.visual gc使用,jvm内存信息可以查看下图
    内存信息
    visual gc图形界面如下图
    在这里插入图片描述
    整个区域分为三个部分:spaces、graphs、histogram
    1.spaces区域:代表虚拟机内存分布情况。从图中可以看出,虚拟机被分为Metaspace、Old、Eden、S0、S1
    1.1)Metaspace:元空间,
    1.1.1)java1.8用来替换PermGen永久代,最大区别是元空间不在jvm中,而是本地内存,但是可以通过参数指定大小。相关的参数:
    -XX:MetaspaceSize,初始空间大小,达到该值就会触发垃圾收集进行类型卸载,同时GC会对该值进行调整:如果释放了大量的空间,就适当降低该值;如果释放了很少的空间,那么在不超过MaxMetaspaceSize时,适当提高该值。
    -XX:MaxMetaspaceSize,最大空间,默认是没有限制的。
    除了上面两个指定大小的选项以外,还有两个与 GC 相关的属性:
    -XX:MinMetaspaceFreeRatio,在GC之后,最小的Metaspace剩余空间容量的百分比,减少为分配空间所导致的垃圾收集
    -XX:MaxMetaspaceFreeRatio,在GC之后,最大的Metaspace剩余空间容量的百分比,减少为释放空间所导致的垃圾收集
    1.1.2)为啥替换掉PermGen:
    1.1.1.1、字符串存在永久代中,容易出现性能问题和内存溢出。
    1.1.1.2、类及方法的信息等比较难确定其大小,因此对于永久代的大小指定比较困难,太小容易出现永久代溢出,太大则容易导致老年代溢出。
    1.1.1.3、永久代会为 GC 带来不必要的复杂度,并且回收效率偏低。
    1.1.1.4、Oracle 可能会将HotSpot 与 JRockit 合二为一。
    1.2)heap:
    1.2.1)java堆(java heap)。它包括老年代(图中Old区域)和新生代(图中Eden/S0/S1三个统称新生代,分为Eden区和两个Survivor区域),他们默认是8:1分配内存。
    1.2.1)
    -xms512m 设置初始堆内存、
    -Xmx512m 最大堆内存、
    -XX:+HeapDumpOnOutofMemoryError 内存异常打印dump 、
    -Xmn100m 新生代内存 因为Heap分为新生代跟老年代,所以512M-100M=412M老年代就是412M、
    -XX:SurvivorRatio=8 新生代内存分配比例(8:1:1),
    (初始内存跟最大内存最好相等,防止内存不够时扩充内存或者Full GC,导致性能降低)
    2,Graphs区域:内存使用详细介绍
    2.1)Compile Time(编译时间):47381compiles 表示编译总数,1m 34.372s表示编译累计时间。一个脉冲表示一次JIT编译,窄脉冲表示持续时间短,宽脉冲表示持续时间长。
    2.2)Class Loader Time(类加载时间): 66576loaded表示加载类数量, 1829 unloaded表示卸载的类数量,1m 42.148s表示类加载花费的时间
    2.3)GC Time(GC Time):114collections表示垃圾收集的总次数,3.701s表示垃圾收集花费的时间,last cause表示最近垃圾收集的原因
    2.4)Eden Space(Eden 区):括号内的200M表示最大容量,200M表示当前容量,后面的137.520M表示当前使用情况,92collections表示垃圾收集次数,1.544s表示垃圾收集花费时间
    2.5)Survivor 0/Survivor 1(S0和S1区):括号内的25M表示最大容量,25M表示当前容量,之后的值是当前使用情况
    2.6)Old Gen(老年代):括号内的500M表示最大容量,500M表示当前容量,之后的265.26表示当前使用情况,3collections表示垃圾收集次数 ,2.158s表示垃圾收集花费时间
    2.7) Metaspace括号内的1.279G表示最大容量,408.836M表示当前容量,后面的392.074M表示当前使用情况。
    3,Histogram区域:survivor区域参数跟年龄柱状图
    3.1)Tenuring Threshold:表示新生代年龄大于当前值则进入老年代
    3.2)Max Tenuring Threshold:表示新生代最大年龄值。
    3.3)Desired Survivor Size:Survivor空间大小验证阙值(默认是survivor空间的一半),用于Tenuring Threshold判断对象是否提前进入老年代。
    3.4)Current Survivor Size:当前survivor空间大小 。
    3.5)histogram柱状图:表示年龄段对象的存储柱状图。
    3.7)如果显示指定-XX:+UseParallelGC --新生代并行、老年代串行收集器 ,则histogram柱状图不支持当前收集器
    4.安装 ”Visual GC"插件:
    这个插件是jvisualvm的插件,它非常强大,可以动态的对指定的进程进行监控,并且来通过统计面板来分类显示出各项任务/事件的总时间开销:
    需要进行远程jvm监测的,需要启动时添加参数
    -Djava.rmi.server.hostname=ip
    -Dcom.sun.management.jmxremote.port=port
    -Dcom.sun.management.jmxremote.ssl=false
    -Dcom.sun.management.jmxremote.authenticate=false

  • 相关阅读:
    【模式识别与机器学习】——4.3离散K-L变换
    【模式识别与机器学习】——4.2特征选择
    【模式识别与机器学习】——4.1模式分类可分性的测度
    【模式识别与机器学习】——3.10决策树
    【模式识别与机器学习】——3.9势函数法:一种确定性的非线性分类方法
    【模式识别与机器学习】——3.8可训练的确定性分类器的迭代算法
    Android Appliction 使用解析
    Android Service 生命周期
    Android View 绘制刷新流程分析
    Android 设置Activity样式 透明度
  • 原文地址:https://www.cnblogs.com/sheseido/p/14155738.html
Copyright © 2011-2022 走看看