当前位置: 首页 > news >正文

第三章:内存分配与回收策略

Java内存自动管理可以解决两个问题:给对象分配内存和回收分配给对象的内存;
给对象分配内存,都是在堆上进行分配的, 对象主要分配在新生代的Eden区上,如果启动了本地线程分配缓存TLAB,将按线程优先在TLAB上分配,少数情况也可能会直接分配在老年代中,分配的规则并不是固定的,也取决于当前使用的垃圾回收器组合。
  • 大对象直接在老年单分配:需要大量连续存储空间的Java对象,典型的大对象就是长的字符串或者数组。可以通过设置-XX:PretenureSizeThreshold参数,令大于这个值的对象直接在老年代中分配内存,这样做的好处避免了在新生代中复制大量的内存(Eden与Survior)。
-XX:PretenureSizeThreshold参数只对Serial和ParNew两种回收器有效。
Parallel Scavenger回收器一般不需要设置-XX:PretenureSizeThreshold参数。
  • 长期存活的对象进入老年代中,为了做到这一点,需要在每个对象头上记录对象年龄(即对象在新生代中经过了几次复制),默认当对象头中age大于15时,会把对象放到老年代中,可以通过-XX:MaxTenuringThreshold设置。
  • 动态对象年龄判定:虚拟机中并不是一定按照每个对象头中age来判定对象是否进入老年代的,如果在Survior空间中相同年龄所有对象大小的总和大于Survior空间的一半,年龄大于或者等于该年龄的对象就可以直接进入老年代中,无需等待MaxTenuringThreshold中要求的年龄。
  • 空间担保:在发生Minor GC之前,会检测老年代中最大连续内存空间是否大于新生代中多有对象总空间,如果这个条件成立,那么Minor GC是安全,因为如果新生代中所有对象都放入老年代中是可以存放下。如果这个条件不成立,则检查HandlePromotionFailure设置值是否允许担保失败,如果允许,那么继续检查老年代最大可用的连续内存是否大于历次晋升到老年代对象的平均大小,如果大于,将尝试进行一次Minor GC,尽管Minor GC有风险,如果小于或者HandlePromotionFailure设置不允许风险,这时将进行一次Full GC。

转载于:https://www.cnblogs.com/use-D/p/10727129.html

相关文章:

  • visual studio 命令行 build
  • 摘要商城总结
  • StringBuufer与StringBulder线程的区别
  • 微信分享到朋友圈,怎么自定义分享的标题,图片,内容?
  • BZOJ2300[HAOI2011]防线修建——非旋转treap+凸包(平衡树动态维护凸包)
  • 今日学习20190425
  • MAYA 卸载工具,完美彻底卸载清除干净maya各种残留注册表和文件
  • 跨域的理解,以及解决方案!
  • Android进阶:七、Retrofit2.0原理解析之最简流程
  • 20190422 Gitlab Jenkins 的搭建及准备web页面
  • 构建可靠系统的原则与实践
  • 论数据集成技术的演变和发展2/3
  • 死磕 java集合之ArrayDeque源码分析
  • 大佬们快进来给学弟学妹指条明路吧!
  • mongoDb性能提升
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 78. Subsets
  • Angular 4.x 动态创建组件
  • Angular 响应式表单 基础例子
  • Effective Java 笔记(一)
  • express如何解决request entity too large问题
  • flutter的key在widget list的作用以及必要性
  • Laravel 实践之路: 数据库迁移与数据填充
  • MQ框架的比较
  • node入门
  • Python中eval与exec的使用及区别
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • Vue.js 移动端适配之 vw 解决方案
  • 从setTimeout-setInterval看JS线程
  • 欢迎参加第二届中国游戏开发者大会
  • 记录一下第一次使用npm
  • 软件开发学习的5大技巧,你知道吗?
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 硬币翻转问题,区间操作
  • 优化 Vue 项目编译文件大小
  • 树莓派用上kodexplorer也能玩成私有网盘
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • #HarmonyOS:基础语法
  • %@ page import=%的用法
  • (06)金属布线——为半导体注入生命的连接
  • (1)Nginx简介和安装教程
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (k8s中)docker netty OOM问题记录
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (十六)串口UART
  • (十五)使用Nexus创建Maven私服
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • .CSS-hover 的解释
  • .net CHARTING图表控件下载地址
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net 按比例显示图片的缩略图
  • .net 后台导出excel ,word
  • .NET建议使用的大小写命名原则
  • .net连接oracle数据库