而且新生代还有另外两块Survivor区域,默认Eden区域占据新生代的80%,每块Survivor区域占据新生代的10%。
根据以上可以得出
堆内存初始和最大堆大小都是10MB
初始新生代和最大新生代都是5MB
这样算下来,内存大概是这样,堆里刚好10MB
这段代码,在eden区分配了3个1MB的对象 ,最后array1=null,3个byte数组对象成了垃圾,而eden区上面也说了是4MB,两个survivor各占0.5MB
那现在eden区里已经有了3MB的对象了,
明显是不行的,因为Eden区总共就4MB大小,而且里面已经放入了3个1MB的数组了,所以剩余空间只有1MB了,此 时你放一个2MB的数组是放不下的。
所以这个时候就会触发年轻代的Young GC。
在Eclipse等开发工具里如何以指定JVM参数运行程序,就是对你的程序右键,然后选择“Run As -> Run Configurations”,接着在下图中填入对应的JVM参数:
然后运行即可,此时运行完毕后,会在下述工程目录中出现一个gc.log文件,里面就是本次程序运行的gc日志,如下图所示。
打开gc.log文件,我们会看到如下所示的gc日志:
如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!
加入交流群
请使用微信扫一扫!