第9讲

JAVA内存分区
年轻代
新生代主要存的是存活时间比较短的对象。比如方法内创建的对象，随着方法完成，栈帧弹栈 其所引用的变量被回收。对象可能也需要马上回收了

老年代
老年代存储的是存活时间比较长的对象。比如静态变量指向的对象。

永久代与方法区：
方法区是JVM规范中的一个概念，并不是实际实现。永久代是交Perm区，永久代存的东西就是方法区规定的那些东西。jdk8以后永久代被移除了，取而代之的是metaspace(元空间)。

大部分的对象在年轻代创建，即使是static变量指向的对象
随着对象一直创建，年轻代空间不够了，此时就会触发Young GC(也叫Minor GC),此时就会去回收年轻代那些没有引用指向的对象。这就是Young的触发条件。如果经历过一次Young回收过程之后，对象没被清除，那么对象的年龄+1。
直到对象的年龄达到15岁，那么这个对象会被转入到老年代。
老年代的对象会被回收吗？老年代的对象也是可能会被回收的，随着对象越来越多，进入老年代的对象也越来越多，那么老年代区域也可能满了。这个时候也需要对老年代的对象进行回收

关于对象分配，还有以下规则，这个后面再说
1 新生代垃圾回收之后，因为存活对象太多，导致大量对象直接进入老年代
2 特别大的超大对象直接不经过新生代就进入老年代
3 动态对象年龄判断机制
4 空间担保机制

先理解下面4点
先理解对象优先分配在新生代
新生代如果对象满了，会触发Minor GC回收掉没有人引用的垃圾对象
如果有对象躲过了十多次垃圾回收，就会放入老年代里
如果老年代也满了，那么也会触发垃圾回收，把老年代里没人引用的垃圾对象清理掉


第10讲
JVM参数
-Xms：Java堆内存的大小  -Xmx：Java堆内存的最大大小，(这两个一般设置一样大)
-Xmn：Java堆内存中的新生代大小，扣除新生代剩下的就是老年代的内存大小了
-XX:PermSize：永久代大小 -XX:MaxPermSize：永久代最大大小 (这两个一般设置一样大)
-Xss：每个线程的栈内存大小
