jvm MinorGC和查看GC日志

本文通过一个具体的Java代码示例,深入探讨了Java内存管理机制,特别是新生代垃圾回收(Minor GC)的过程。通过设置特定的JVM参数,观察不同大小对象分配对堆内存的影响,以及如何触发Minor GC。此外,还介绍了Java 8中Metaspace的概念及其与持久代的关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【代码】

public class Page93 {
	private static final int _1MB = 1024 * 1024;
	
	public static void main(String[] args) {
		
		minorGC(); 
	}
	
	/**
	 * vm params: -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
	 */
	private static void minorGC() {

		byte[] allocation1, allocation2, allocation3, allocation4;
		allocation1 = new byte[2 * _1MB];
		allocation2 = new byte[2 * _1MB];
		allocation3 = new byte[2 * _1MB];
		allocation4 = new byte[4 * _1MB]; 
	}
}
// 运行结果,打印gc日志
D:\bench-cluster\spring_in_action_eclipse\jvm\src>java -verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8 chapter3.Page93
Heap
 PSYoungGen      total 9216K, used 7300K [0x00000000ff600000, 0x0000000100000000, 0x0000000100000000)
  eden space 8192K, 89% used [0x00000000ff600000,0x00000000ffd210f0,0x00000000ffe00000)
  from space 1024K, 0% used [0x00000000fff00000,0x00000000fff00000,0x0000000100000000)
  to   space 1024K, 0% used [0x00000000ffe00000,0x00000000ffe00000,0x00000000fff00000)
 ParOldGen       total 10240K, used 4096K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000)
  object space 10240K, 40% used [0x00000000fec00000,0x00000000ff000010,0x00000000ff600000)
 Metaspace       used 2550K, capacity 4486K, committed 4864K, reserved 1056768K
  class space    used 279K, capacity 386K, committed 512K, reserved 1048576K

有个问题是,Metaspace 是个什么玩意儿啦?

Metaspace 是java8用来替代持久代的产物;参见 

https://www.cnblogs.com/xrq730/p/8688203.html 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值