上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 19 下一页
摘要: 过程描述 优先在eden分配 大对象直接进去老年代 年轻代分配失败 进行minor gc minor gc前会 老年代内存“分配担保” 最大的连续空闲空间大于 历次晋升对象总大小 是 安全进行minor gc 否 先进行full gc minor gc 后 survivor 容纳不下的存活对象,晋升 阅读全文
posted @ 2021-03-16 23:45 mushishi 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 实验代码 /** * -Xmn10M -Xms20M -Xmx20M -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=15 * -XX:PretenureSizeThreshold=3M -XX:+UseParNewGC -XX:+UseConcMarkSw 阅读全文
posted @ 2021-03-16 23:42 mushishi 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 实验一: 存活对象包含 小于survivor大小的对象 + 大于survivor的对象 private static final Integer _1MB = 1024 * 1024; /** * -XX:+UseSerialGC -Xms20M -Xmx20M -Xmn10M -XX:+Print 阅读全文
posted @ 2021-03-16 23:14 mushishi 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 理论 正常情况下, 年轻代空间里边的对象熬过 MaxTernuringThreshold 才能晋升到老年代;但是如果 survivor 空间中 年龄1 + 年龄2 +年龄3 +…. + 年龄n (n>1)的这些对象大小的总和大于 survivor 空间的一半, 年龄大于或等于该年龄 n 的对象就会直 阅读全文
posted @ 2021-03-16 23:06 mushishi 阅读(940) 评论(0) 推荐(1) 编辑
摘要: 永久代和栈内存大小一般较为固定 永久代(元数据区)也就存放类的元数据 一般512m就够了 -XX:MaxMetaspaceSize=512m -XX:MetaspaceSize=512m 比如我司线上环境的metaspace占用稳定在100m出头,如果机器配置低点2C4G的话,设置为256M也是够的 阅读全文
posted @ 2021-03-16 22:46 mushishi 阅读(407) 评论(0) 推荐(0) 编辑
摘要: 要解决的问题 系统要部署多少台机器 每台机器的内存空间 每台机器jvm堆内存大小 jvm内存空间要多少,才能支撑这么多对象的创建 不至于进程直接奔溃 内存压力计算 qps估算 日活用户数量、高峰期时段多久、用户行为涉及到的接口、接口中创建的对象大小 举例: (1) 假设用户系统高峰期 1w+qps 阅读全文
posted @ 2021-03-16 22:29 mushishi 阅读(665) 评论(0) 推荐(0) 编辑
摘要: 叨逼叨 自己之前也看过一些关于jvm的书籍,知道jvm的内存分几个区域、一个对象从创建到销毁在这个几个区域是怎么扭转的,类加载机制是怎么样的、知道几种回收算法、也大概清楚常见垃圾回收器的基本执行过程,好像常见的oom、fullgc排查工具和步骤也清楚,应付一般的面试的话基本也ok 但是,当在工作中实 阅读全文
posted @ 2021-03-16 00:13 mushishi 阅读(96) 评论(0) 推荐(0) 编辑
摘要: 转自 https://stackoverflow.com/questions/34670751/why-gc-on-old-generation-takes-longer-than-gc-on-young-generation 主要是两点: - 年轻代的对象通常比较小、存活时间非常短,需要频繁回收 阅读全文
posted @ 2021-03-15 23:53 mushishi 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 大对象直接进入老年代 相关参数 -XX:PretenureSizeThreshold 动态年龄判断 minor gc 后,一批对象总大小超过了 survivor 区的 50%,那么就让大于等于这批对象年龄的对象直接进入老年代 具体规则是,从年龄1的对象开始,把 年龄1 + 年龄2 + 年龄n 多个年 阅读全文
posted @ 2021-03-15 23:26 mushishi 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 对象分配过程 执行方法时候, 方法压入栈中,局部变量指向的对象在新生代分配内存 当方法执行完毕,局部变量随栈帧弹出 这时候内存对象就没人引用了 随着1、2步骤的不断发生,新生代内存满了 ,触发 young gc 回收掉哪些不再被引用的对象实例 如果有的对象逃过15次 young gc 都还活着(一般 阅读全文
posted @ 2021-03-15 23:20 mushishi 阅读(79) 评论(0) 推荐(0) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 ··· 19 下一页