首页 > 其他 > 详细

内存分配

时间:2020-09-01 22:26:19      阅读:64      评论:0      收藏:0      [点我收藏+]

内存分配和回收策略

  • 对象优先在Eden分配

  • 大对象直接进入老年代

  • 长期存活的对象将进入老年代

  • 动态对象年龄判断

    如果Survivor空间中相同年龄所有对象的总和大于Survivor空间的一般,年龄大于或等于该年龄的对象就可以直接进入老年代

  • 空间分配担保

逃逸分析

基本原理

分析对象动态作用域,当一个对象在方法中被定义后,它可能被外部所引用,例如作为调用参数传递到其他方法中,这种称为方法逃逸,甚至还有可能被外部线程访问到,比如赋值给可以在其他线程中访问得到实例变量,这种称为线程逃逸

栈上分配

如果确定一个对象不会逃逸出线程之外,那么就可以让这个对象在栈上分配内存,对象所占用的内存空间就会随栈帧出栈而销毁

标量替换

标量:若一个数据已经无法分解成更小的数据来表示,例如基本数据类型,那么这些数据就被称为标量

如果把一个Java对象拆散,根据程序访问的情况,将其用到的成员变量恢复为原始类型来访问,这个过程就被称为标量替换,不允许对象逃逸出方法范围

同步消除

线程同步本身是一个相对耗时的过程,如果逃逸分析能够确定一个变量不会逃逸出线程,无法被其他线程访问,那么这个变量的读写肯定不会有竞争,那么对这个变量实施的同步措施就可以被安全的消除掉

内存分配

原文:https://www.cnblogs.com/gszixin/p/13598542.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!