jvm gc 原理测试
2015-09-08 17:42
267 查看
测试时使用的jvm版本
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode, sharing)
测试源码
public class TestGC {
static Map<String, String> map = new HashMap<String, String>();
public static void main(String[] args) throws InterruptedException {
Thread.sleep(10000);
int i = 0;
while (true) {
String str = new String(i + "");
Thread.sleep(1);
if (i++ % 1000 == 0) {
map.put(i + "", str);
}
}
}
}
在window系统下打开cmd窗口 输入命令:jstat -gc pid interval
显示内容说明
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
分析:
JVM的GC采用的是分代式垃圾回收,在对象的生命周期内对象的引用可能出现不同区域内,垃圾回收过程中可能将对象移动到不同的区域
1.在EU=EC时表明Eden区域的空间已经不够了,此时触发一次PSYoungGC回收Eden区的垃圾,不能被清除的对象将被转移到survivor区
2.survivor区的对象被转移到Old
Space
java version "1.8.0_60"
Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
Java HotSpot(TM) Client VM (build 25.60-b23, mixed mode, sharing)
测试源码
public class TestGC {
static Map<String, String> map = new HashMap<String, String>();
public static void main(String[] args) throws InterruptedException {
Thread.sleep(10000);
int i = 0;
while (true) {
String str = new String(i + "");
Thread.sleep(1);
if (i++ % 1000 == 0) {
map.put(i + "", str);
}
}
}
}
在window系统下打开cmd窗口 输入命令:jstat -gc pid interval
显示内容说明
S0C:年轻代中第一个survivor(幸存区)的容量 (字节)
S1C:年轻代中第二个survivor(幸存区)的容量 (字节)
S0U:年轻代中第一个survivor(幸存区)目前已使用空间 (字节)
S1U:年轻代中第二个survivor(幸存区)目前已使用空间 (字节)
EC:年轻代中Eden(伊甸园)的容量 (字节)
EU:年轻代中Eden(伊甸园)目前已使用空间 (字节)
OC:Old代的容量 (字节)
OU:Old代目前已使用空间 (字节)
PC:Perm(持久代)的容量 (字节)
PU:Perm(持久代)目前已使用空间 (字节)
YGC:从应用程序启动到采样时年轻代中gc次数
YGCT:从应用程序启动到采样时年轻代中gc所用时间(s)
FGC:从应用程序启动到采样时old代(全gc)gc次数
FGCT:从应用程序启动到采样时old代(全gc)gc所用时间(s)
GCT:从应用程序启动到采样时gc用的总时间(s)
分析:
JVM的GC采用的是分代式垃圾回收,在对象的生命周期内对象的引用可能出现不同区域内,垃圾回收过程中可能将对象移动到不同的区域
1.在EU=EC时表明Eden区域的空间已经不够了,此时触发一次PSYoungGC回收Eden区的垃圾,不能被清除的对象将被转移到survivor区
2.survivor区的对象被转移到Old
Space
相关文章推荐
- Asp.net MVC 与 Asp.net Web API 区别
- java的io处理2
- iOS中文网址路径转换URLEncode
- 电商交易背景知识合集第一季
- MySQL 5.6 my.cnf 参数详细说明
- JQuery Mobile难点备忘
- Ajax中Get请求与Post请求的区别
- OGNL
- 通过virtualbox实现虚拟机中共享本地目录
- 要快乐,乐一乐
- 统计MYSQL数据库所有表当前的数据量!
- Weblogic生产模式切换到开发模式
- 完数2
- AS3设计模式-单例模式
- 横竖屏切换
- 闭包写个选项卡
- 数据结构之线性表的顺序结构操作2-(删除,插入,查值等)
- java的IO处理
- python3.4连接mysql
- LightOJ 1370 Bi-shoe and Phi-shoe (欧拉函数+二分)