JVM的作用就是编译翻译.class文件。让Java应用程序实现跨平台。
但是JVM底层很复杂,今天来说一下JVM的Heap堆区。
Heap堆是JVM 所管理的内存中最大的一块区域,被所有线程共享的一块内存区域。堆区中存放对象实例,“几乎”所有的对象实例以及数组都在这里分配内存。
堆区按照“分带思想”划分空间。有新生代和老年代两个区域
老年代大概是指存在时间长的线程,而不是指年龄(不要理解错了)
新生代就是新创建的线程,新生代默认占比三分之一,老年代默认占比三分之二。
而新生代又分为三个区,伊甸区(Eden)和幸存者区,幸存者分为s0和s1。
s0和s1分别占比10%,伊甸区独占80%。
幸存者区,顾名思义就是没有一次一次被垃圾回收机制回收的对象实例所在的区域
伊甸区,新创建的对象实例会往伊甸区储存,当伊甸区满了,触发垃圾回收的时候,一些旧的对象就会存储在幸存者区域。