1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
11、
12、
新生代和老年代的区别:刚刚创建的对象会统一保存在young generation,当新生代内存不足的时候,jvm虚拟机会通过一定的算法将新生代中的对象挪到老年代中,这样新生代区就又多了一些内存空间,可以继续分配内存。当新生代和老生代都没有内存的时候,虚拟机就会抛出out of memory异常。而且垃圾回收器重点回收的也是新生代和老年代这部分区域。jvm为什么要将堆区分为新生代和老生代而不是分为一整块呢?最大的好处是可以让开发人员动态地去调整新生代和老生代的内存大小。比如在做即时通信时,可能创建的message这种临时对象比较多,这样就可以将新生代的内存区域调整得大一些,老生代的内存区域调整得小一些,这样便于内存的分配,也可以加快内存的创建。而如果要开发大型服务类程序的化,并不需要频繁地去创建对象,这时候可以适当减少新生代内存区域,从而扩大老生代内存区,这样达到对象常驻内存的效果,可以保证服务的稳定性。