jvm内存分配疑惑

栋先生 2017-04-04 04:52:32

/**
* VM参数:-verbose:gc -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
*/
public class MinorGc{
private static final int _1MB=1024*1024;

public static void testAllocation(){
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]; // 出现一次Minor GC
}

public static void main(String[] args) {
testAllocation();
}
}


我总共分配了20Mb的内存,年轻代10MB,老年代10MB,永久区的21504k是哪来的呀
...全文
887 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
DoZX 2017-06-05
  • 打赏
  • 举报
回复
上边两楼已经说完了 我这里总结一下 你分配的20m内存是分配在堆里的 而你说的21504k而是存在于方法区的内存上 在JDK8 中方法区称为元空间
q143000 2017-05-27
  • 打赏
  • 举报
回复
永久区的大小不是在这设置的,你分的20m应该是堆内存,能问下你这个是怎么打印出来的么,我每次打印gc日志都是看eclipse的日志.....
汲建帅 2017-05-15
  • 打赏
  • 举报
回复
你没有设置永久代的大小,他会默认有个默认值的。

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧