java内存想法一

测试代码 :


package com.taobao.consign.topmapping;

public class GcTest {

	private static final int _1mb = 1024 * 1024 ;
	
	public static void main(String[] args) { 
		// 测试参数,eclipse直接设置  -Xms20M -Xmx20M -Xmn10M  -XX:PermSize=10M  -XX:MaxPermSize=10M -XX:+PrintGCDetails
		byte[] a , b ,c ,d ,e ,f ,g;
		a= new byte[2 * _1mb];
		b= new byte[2 * _1mb];
		c= new byte[2 * _1mb]; //6
		d= new byte[4 * _1mb]; //10
		e= new byte[2 * _1mb]; //14
//		f= new byte[4 * _1mb]; // 18
		//g= new byte[2 * _1mb]; //22
		
	}
}


控制台的输出:

[GC [DefNew: 6820K->363K(9216K), 0.0066686 secs] 6820K->6507K(19456K), 0.0066997 secs] [Times: user=0.00 sys=0.00, real=0.01 secs] 
Heap
 def new generation   total 9216K, used 6925K [0x36870000, 0x37270000, 0x37270000)
  eden space 8192K,  80% used [0x36870000, 0x36ed86e8, 0x37070000)
  from space 1024K,  35% used [0x37170000, 0x371caea8, 0x37270000)
  to   space 1024K,   0% used [0x37070000, 0x37070000, 0x37170000)
 tenured generation   total 10240K, used 6144K [0x37270000, 0x37c70000, 0x37c70000)
   the space 10240K,  60% used [0x37270000, 0x37870030, 0x37870200, 0x37c70000)
 compacting perm gen  total 10240K, used 375K [0x37c70000, 0x38670000, 0x38670000)
   the space 10240K,   3% used [0x37c70000, 0x37ccdde0, 0x37ccde00, 0x38670000)
    ro space 10240K,  51% used [0x38670000, 0x38b9dc00, 0x38b9dc00, 0x39070000)
    rw space 12288K,  55% used [0x39070000, 0x3970c300, 0x3970c400, 0x39c70000)

看到这样的输出,也许你能明白。

java堆是= 年轻代+年老代

而持久代是单独分配的。

java持久代一般都是代码,方法,常量....


以上两个观点,很多网上文章都是错的。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值