博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Java内存机制的两个问题
阅读量:5919 次
发布时间:2019-06-19

本文共 635 字,大约阅读时间需要 2 分钟。

hot3.png

问题1.

java堆内存的年轻代中,情况: 如果发生Minor GC之后,To Survivor区的空间不足以容纳来自Eden和From Survivor的存活对象,背景:而这个时候既没有年龄达到MaxTenuringThreshold的对象,也没有发生相同年龄对象的大小总和超过Survivor空间的一半的情况问题:java虚拟机会怎么处理这种情况?按理说应该是将一部分对象移入年老代,那么问题是会移动多少对象进入年老代?

问题2. 

书中有说:java堆内存中,如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,那么年龄大于或等于该年龄的对象就可以直接进入年老代,无须等到MaxTenuringThreshold中要求的年龄。问题是:每次Minor GC,都会使Survivor中的对象的年龄加1,而来自Eden去的对象的年龄应该都是1,这样的话,从一个From Survivor区来的对象永远不会有相同年龄对象的大小总和大于Survivor空间的一半的情况发生,而能发生这种情况只能是来自于Eden的对象(它们的年龄为1)那么如果某次来自Eden区的所有对象之和大于Survivor空间的一半时,会导致来自Eden和From Survivor的对象都进入来年老代!!!感觉很不合理,所以我想知道我的理解哪里有问题?

请帮忙解答一下疑惑?

转载于:https://my.oschina.net/lovewxm/blog/523745

你可能感兴趣的文章
WPF自定义控件
查看>>
2019届高二(下)5月月考数学试题(文科)
查看>>
个人简历
查看>>
windows微软的一个多个小工具集成
查看>>
使用ABP框架踩过的坑系列5
查看>>
MySQL zerofill 的用法
查看>>
Linux中的网络
查看>>
mysql 5.7 内存使用监控
查看>>
原生js实现用鼠标画图
查看>>
现在接受参加国际创业节 DOer Express的 申请
查看>>
pendingIntent简单理解 (转载)
查看>>
jQuery之防止冒泡事件
查看>>
JavaEE开发之SpringMVC中的自定义消息转换器与文件上传
查看>>
MKMapView系列之大头针
查看>>
【转】diamond专题(三)—— diamond架构
查看>>
使用Windbg调试.Net应用程序
查看>>
初识FreeMarker
查看>>
Call me, maybe?
查看>>
ubuntu(14.04版本) 配置虚拟环境(一个ip对应多个域名)
查看>>
UITableViewController的使用
查看>>