package chapter3;
/**
* 测试使用的是Serial / Serial Old收集器
* VM args: -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 -XX:+UseSerialGC
* Created by zhaoshiqiang on 2017/7/23.
*/
public class testAllocation {
private static final int _1MB = 1024 * 1024;
public static void main(String[] args) {
byte[] allocation1,allocation2,allocation3,allocation4,allocation5,allocation6,allocation7;
allocation1 = new byte[ 2 * _1MB];
allocation2 = new byte[ 2 * _1MB];
allocation3 = new byte[ 2 * _1MB];
allocation1 = null;
/*
* 出现一次Minor GC,这是因为给allocation4分配所需的2M内存时,发现Eden已经被占用7.8MB(6MB对象,其他为程序所需空间),
* 剩余空间已经不足以分配allocation4的2MB内存,所以发生MinorGC。
* 不过,因为allocation2,allocation3都有引用,所以这次GC总内存占用量减少了allocation1的2M(7645K->4714K)
* GC期间JVM发现已有的2个2MB大小的对象全部无法放入Survivor空间(Survivor空间只有1MB大小),
* 所以只好通过担保机制提前转移到老年代了(tenured generation total 10240K, used 4096K )
* */
allocation4 = new byte[ 2 * _1MB];
allocation5 = new byte[ 2 * _1MB];
allocation6 = new byte[ 2 * _1MB];
allocation5 = null;
allocation6 = null;
allocation2 = null;
/*
* 这里再出现一次Minor GC,出现的原因同上。
* allocation5,allocation6被清空,
* allocation4无法放入Survior区,所以通过担保机制进入老年代,此时新生代为空(7004K->1K(9216K))
* 虽然老年代中的allocation2已经失效,但是因为老年代的GC没有触发,
* 所以老年代被占用6MB(tenured generation total 10240K, used 6760K)
*
* */
allocation7 = new byte[ 2 * _1MB];
allocation7 = null;
//经过这次System.gc(),老年代将把失效的allocation2空间删除,整理后为4MB(Tenured: 6763K->4710K(10240K))
System.gc();
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
读书笔记:深入理解java虚拟机JVM高级特性与最佳实践中代码.zip (35个子文件)
读书笔记:深入理解java虚拟机JVM高级特性与最佳实践中代码
JVMProgress
src
chapter7
ClassLoaderTest.java 2KB
NotInitialization1.java 369B
TestClinit1.java 689B
SuperClass.java 268B
SubClass.java 166B
NotInitialization3.java 552B
NotInitialization2.java 338B
ConstClass.java 217B
TestClient2.java 1KB
chapter4
MemoryMonitoringTest.java 917B
ThreadMonitoringTest.java 1KB
DeadlockMonitoringTest.java 1KB
chapter2
JavaVMStackOOM.java 794B
JavaVMStackSOF.java 810B
HeapOOM.java 509B
RuntimeConstantPoolOOM.java 938B
DirectMemoryOOM.java 702B
chapter3
testTenuringThreshold2.java 989B
testPretenureSizeThreshold.java 936B
testTenuringThreshold.java 817B
ReferenceCountingGC.java 783B
testAllocation.java 2KB
FinalizeEscapeGC.java 1KB
.git
index 2KB
HEAD 23B
refs
heads
master 41B
tags
remotes
origin
master 41B
objects
pack
pack-8d2506f686912d838ae2c9fee19baf613069b010.idx 5KB
pack-8d2506f686912d838ae2c9fee19baf613069b010.pack 22KB
info
FETCH_HEAD 122B
logs
HEAD 130B
refs
heads
master 130B
remotes
origin
master 144B
hooks
config 259B
branches
.gitignore 129B
共 35 条
- 1
资源评论
baidu_16992441
- 粉丝: 311
- 资源: 1045
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功