目录
- 一、堆的核心概述
- 2、内存细分
 
- 二、设置堆内存大小与OOM
- 1、设置堆内存大小
- 2、OOM的说明
 
- 三、年轻代与老年代
- 2、如何查看一个程序新生代和老年代的比例
 
- 四、图解对象分配过程
- 1、图解对象分配过程
- 2、对象分配特殊情况
- 3、常用优化工具概述与 Jprofiler的演示
 
- 五、Minor GC、Major GC、Full GC
- 1、Minor GC、Major GC、Full GC的概念
- 2、Minor GC、Major GC、Full GC的触发机制
 
- 六、堆空间分代思想
- 七、内存分配策略
- 八、对象分配内存 TLAB
- 九、小结堆空间的参数设置
- 十、堆是分配对象的唯一选择吗
 
一、堆的核心概述

 

2、内存细分
现代垃圾收集器大部分都基于分代收集理论设计,堆空间细分为:
 
 JDK7
 
JDK8
 
二、设置堆内存大小与OOM
1、设置堆内存大小

2、OOM的说明
OutOfMemoryError : 当堆中的内存超过指定的最大内存时,将会抛出OOM异常
 
三、年轻代与老年代
/**
 * -Xms600m -Xmx600m -XX:NewRatio=4
 *
 * -XX:NewRatio : 设置新生代与老年代的比例。默认值是2.
 * -XX:SurvivorRatio :设置新生代中Eden区与Survivor区的比例。默认值是8
 * -XX:-UseAdaptiveSizePolicy :关闭自适应的内存分配策略  (暂时用不到)
 * -Xmn:设置新生代的空间的大小。 (一般不设置)
 *
 * @author shkstart  shkstart@126.com
 * @create 2020  17:23
 */
public class EdenSurvivorTest {
    public static void main(String[] args) {
        System.out.println("我只是来打个酱油~");
        try {
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
配置JVM参数-Xms600m -Xmx600m -XX:NewRatio=4,查看堆内存情况
 
2、如何查看一个程序新生代和老年代的比例
jps
jinfo -flag NewRatio 13988

四、图解对象分配过程
1、图解对象分配过程
首先明白一个事情: 幸存者0区和幸存者1区也称为from区和to区(一般幸存者0区和幸存者1区空的那一个为to区),当Edon中的内存满了的时候,便会发生 Young GC,将没有垃圾回收的对象放到to区
2、对象分配特殊情况
当Young GC后,Edon还是不够超大对象分配内存,此时就会将在老年代分配内存
 
3、常用优化工具概述与 Jprofiler的演示
常用优化工具
 
Jprofiler的使用
五、Minor GC、Major GC、Full GC
1、Minor GC、Major GC、Full GC的概念

2、Minor GC、Major GC、Full GC的触发机制
-  Young GC(Minor GC)触发机制 
  
-  Full GC(Major GC)的触发机制 
  
-  Full GC的触发 
  
六、堆空间分代思想


七、内存分配策略
对象提升规则
 




















