• visualvm 插件 visual gc 使用介绍


    visual gc 是 visualvm 中的图形化查看 gc 状况的插件。

    具体详细介绍可参照: http://www.oracle.com/technetwork/java/visualgc-136680.html

    本文也是在此基础上进行的整理归纳。

    OUTPUT FORMAT

    visual gc 工具分成三大块

    Visual GC Window

    我们看到上方图片中的 Spaces 就是 Visual GC window 了。它会分成 3 个竖直的部分,分别是 Perm 永生代,  Old 老年代和新生代。

    新生代又分成 3 个部分 Eden 区, S0 survivor 区, S1 survivor 区.

    每个方框中都使用不同的颜色表示,其中有颜色的区域是占用的空间,空白的部分是指剩余的空间。

    当程序正在运行时,该部分区域就会动态显示,以直观的形式显示各个分区的动态情况。

    Graph Window

    该区域包含多个以时间为横坐标的状态面板。

    Compile Time

      编译时间表示虚拟机的 JIT 编译器编译热点代码的耗时。

      Java 语言为了实现跨平台特性, Java 代码编译出来后形成的 class 文件中存储的是 byte code,jvm 通过解释的方式形成字节码命令,这种方式与 C/C++ 编译成二进制的方式  相比要慢不少。

      为了解决程序解释执行的速度问题, jvm 中内置了两个运行时编译器,如果一段 Java 代码被调用达到一定次数,就会判定这段代码为热点代码(hot spot code),并将这段代  码交给 JIT 编译器编译成本地代码,从而提高运行速度。所以随着代码被编译的越来越彻底,运行速度应当是越来越快。

      而 Java 运行器编译的最大缺点就是它进行编译时需要消耗程序正常的运行时间,也就是 compile time.

    Class Loader Time

    表示 class 的 load 和 unload 时间

    GC Time

    22 collections 表示自监视以来一共经历了 22 次GC, 包括 Minor GC 和 Full GC
    2.030s 表示 gc 共花费了 2.030s
    Last Cause: Allocation Failure 表示上次发生 gc 的原因: 内存分配失败

    Eden Space

    Eden Space (340.500M,185.000M): 91.012M
    表示 Eden Space 最大可分配空间  340.500M
    Eden Space 当前分配空间 185.000M
    Eden Space 当前占用空间 91.012M
    21 collections, 1.012s
    表示当前新生代发生 GC 的次数为 21 次, 共占用时间 1.012s

    Survivor 0 and Survivor 1

    S0 和 S1 肯定有一个是空闲的,这样才能方便执行 minor GC 的操作,但是两者的最大分配空间是相同的。并且在 minor GC 时,会发生 S0 和S1 之间的切换。
    Survivor 1 (113.500M, 75.000M) : 36.590M
    表示 S1 最大分配空间 113.500M, 当前分配空间 75.000M, 已占用空间 36.590M

    Old Gen

      

      Old Gen (682.500M, 506.500M) : 233.038M, 1 collections, 1.018s

      (682.500M, 506.500M) : 233.038M

    表示 OldGen 最大分配空间 682.500M, 当前空间  506.500M, 已占用空间 233.038M

    1 collections, 1.018s 表示老年代共发生了 1次 GC, 耗费了 1.018s 的时间。

    老年代 GC 也叫做 Full GC, 因为在老年代 GC 时总是会伴随着 Minor GC, 合起来就称为 Full GC。

    Perm Gen

      

      Perm Gen (256.000M, 227.500M) : 122.800M

      256.000M 表示最大可用空间,可以使用 -XX:MaxPermSize 指定永久代最大上限

          227.500M  表示当前永久代空间

           122.800M 表示永久代当前占用空间

        

           对 HotSpot 虚拟机来说,可以把永久代直接等同于方法区,其中会存储已经被jvm 加载的类信息,常量,静态变量,即时编译器编译后的代码等数据。

      

      

       

    作者:ReyCG

    出处:ReyCG 的博客 — https://www.cnblogs.com/reycg-blog/

    本站使用「署名 4.0 国际」创作共享协议,转载请在文章明显位置注明作者及出处。

    如果本文对您有所帮助,还请帮忙 【推荐】 下此文。您的支持是对博主最大的鼓励,感谢您的认真阅读。

  • 相关阅读:
    c++中指向对象的指针为NULL时可以调用对象成员函数吗
    类成员函数作为函数参数出现error C3867:非标准语法;请使用“&”来创建指向成员的指针
    c++能不能给类的成员变量在声明的时候初始化?
    c++中使用指针调用函数和使用指针调用类对象的()重载函数
    c++中怎么自定义事件监听(回调函数)
    Qt中关于release版本程序异常结束问题
    VS中PCL库附加依赖项配置
    c++ primer plus速记
    小知识点杂记
    Qt 5.9使用VTK显示点云
  • 原文地址:https://www.cnblogs.com/reycg-blog/p/7805075.html
Copyright © 2020-2023  润新知