Java堆是和Java应用程序关系最为紧密的内存空间,几乎所有的对象都存放在堆中.并且堆是完全自动化管理的. 根据垃圾回收机制的不同,Java堆有可能有不同的结构.最为常见的一种就是将整个Java堆分为新生代和老年代.其中,新生代存放新生对象或者年龄不大的对象. 老年代存放老年对象.新生代可能分为eden区.s0区.s1区,s0和s1也被成为from和to区域,他们是两块大小相等,可以互换角色的内存空间. 在多数情况下,对象首先分配在eden区,在一次新生代回收后,如果对象还存活,则会进入s0或…