年老代过大有什么影响
2016-06-15 13:58
323 查看
年老代大部分是活着的对象,那么年老代过大,或者对象过早提升到年老代,导致年老代存活对象过多,那么如果做一次FullGC,寻找活着的对象,那么对于性能可想而知。
如果系统频繁地发生FullGC的话,而这些或者的对象在这么短的时间内被注销的概率很低,那么FullGC的时间越长,就会有越多的请求得不到响应或者响应很慢,它们所持有的内存就无法释放掉,就会有越多的对象进入Old区域,这就会在一个点上产生连锁效应。
old区不想young区有survivor空间专门存放存活的对象,因而,old区域的对象的清除操作需要在自己的空间内扫描遍历,然后将对应的垃圾对象清除掉,这个时间开销自然是比较大的,虽然可以并行,但是并行之中又带来了很多冲突的复杂性,因而FullGC一直都不是我们想看到的。
清除操作会导致内存产生很多碎片,如果碎片很多的话,在大对象分配上面会出现一些麻烦的问题,因而需要整理碎片,如果存活对象过多的话,那么对于内存碎片整理来说,就越麻烦,有时候可能就为了几个字节的碎片而导致几百M内存对象的移动(JVM不会因为因为这里有几个字节的碎片,而寻找一个几个字节大小的对象放在这个位置,它采用的是顺序移动的方式)。
如果系统频繁地发生FullGC的话,而这些或者的对象在这么短的时间内被注销的概率很低,那么FullGC的时间越长,就会有越多的请求得不到响应或者响应很慢,它们所持有的内存就无法释放掉,就会有越多的对象进入Old区域,这就会在一个点上产生连锁效应。
old区不想young区有survivor空间专门存放存活的对象,因而,old区域的对象的清除操作需要在自己的空间内扫描遍历,然后将对应的垃圾对象清除掉,这个时间开销自然是比较大的,虽然可以并行,但是并行之中又带来了很多冲突的复杂性,因而FullGC一直都不是我们想看到的。
清除操作会导致内存产生很多碎片,如果碎片很多的话,在大对象分配上面会出现一些麻烦的问题,因而需要整理碎片,如果存活对象过多的话,那么对于内存碎片整理来说,就越麻烦,有时候可能就为了几个字节的碎片而导致几百M内存对象的移动(JVM不会因为因为这里有几个字节的碎片,而寻找一个几个字节大小的对象放在这个位置,它采用的是顺序移动的方式)。
相关文章推荐
- 树——二叉树中序遍历的下一个节点
- ubuntu 安装 PIL(Python图像库)
- git的使用
- Android实现点击两次返回键退出
- 程序打开文件意外终止的调试-基于errorno.h
- 编译libRTMP(RTMPdump) For iOS
- 麒麟开源堡垒主机在等保上的合规性分析
- ZigZag Conversion - Javascript
- HTMLTestRunner 错误日志显示问题
- 四.python数据类型,语句
- CMD 模块定义规范
- UML图详解(八)状态机(状态图和活动图)
- Android实现界面完全全屏
- 数据库连接池C3P0学习
- 第二次输入http://localhost:8080/solr/就报404错
- DateUtils 日期工具类
- elaticsearch安装及相关插件
- LightOJ 1184 Marriage Media 最大匹配-匈牙利算法
- 用iPhone解锁汽车 苹果新专利恐成黑客目标
- CART决策树算法总结