zoukankan      html  css  js  c++  java
  • Java垃圾回收_过程观察

    这是今天看JVM垃圾回收的时候做的实验观察。

    1. 使用工具:Java VisualVM、VisualVM GC插件
    2. 观察应用:Tomcat容器中的Web服务

    1. Java VisualVM

    在tomcat服务启动过程中,内存展示的“锯齿”模式(如图1所示),表示对象被分配到“伊甸园(Eden区)”中,然执行“年轻代垃圾收集”;每次年轻代收集之后,被占用的内存量回落到基线水平。


    Tomcat服务启动

    图1

    在Tomcat服务运行过程中,堆内存表现为“使用内存”逐渐增长,到达最大值(接近)时,会进行垃圾收集(如图2所示),然后堆内存使用回到基线水准。基线水平(蓝色)是终身制对象和幸存者对象合起来的用量。如果基线水准保持平稳或者逐渐下行,则说明内存使用良好;如果基线水平上升,未必是程序中有错误,也可能是有些对象的生命周期长,足够进入Old区。

    tomcat服务运行过程

    图2

    2. VisualVM GC

    通过观察Tomcat应用服务的运行,可以看到Eden(伊甸园)中的空间逐渐不够用,然后经历一次年轻代收集:年轻代收集过后,伊甸园空间和收集前的s0中(如图3所示)的对象被回收;在上述两个空间中幸存下来的对象存放在s1中,如图4所示。

    这里写图片描述

    图3

    执行过一次年轻代回收之后的结果如下所示:

    这里写图片描述

    图4

    3. 补充概念

    1. 年轻代收集:针对Eden和幸存者区域中的对象执行“标记&清除”算法,会有一部分没有被清除的对象,遗留下来存放到另一个幸存者区域中;
    2. 何时将对象放入Old区域:(1)经过多次(达到阈值)都幸存下来的对象,则进入Old区域;(2)年轻代回收的时候发现幸存者区域满了。

    参考资料

    1. JVM中的G1垃圾回收器
    2. 《Java程序员修炼之道》
  • 相关阅读:
    [转] ArcGIS自定义工具完全教程 1/2
    ArcMap工具栏中嵌入自定义按钮
    自定义ArcGIS应用程序
    制作ArcGIS DLL插件的安装包
    如何编写和注册.Net的Com组件
    空间参考(三)ArcGIS Engine的支持
    ArcGIS Desktop开发基础
    ArcGIS中坐标系统简介
    Ao开发
    ArcGIS Desktop Addin插件开发系列
  • 原文地址:https://www.cnblogs.com/javaadu/p/11742616.html
Copyright © 2011-2022 走看看