阿里常见面试题:JVM的内存模型有哪些?

JVM的内存模型有: 堆、栈、永久区、寄存器,堆外内存

一、基本概念:

      JVM把内存区分为堆区(heap)、栈区(stack)和方法区(method)。由于本文主要讲解JVM调优,因此我们可以简单的理解为,JVM中的堆区中存放的是实际的对象,是需要被GC的。其他的都无需GC。

      下图文JVM的内存模型

<img src="https://pic2.zhimg.com/v2-1d213b999fa3bcc17504d9d104393929_b.png" data-caption="" data-size="normal" data-rawwidth="1160" data-rawheight="482" class="origin_image zh-lightbox-thumb" width="1160" data-original="https://pic2.zhimg.com/v2-1d213b999fa3bcc17504d9d104393929_r.jpg">

阿里常见面试题:JVM的内存模型有哪些?_第1张图片

从图中我们可以看到,

        1、JVM实质上分为三大块,年轻代(YoungGen),年老代(Old Memory),及持久代(Perm,在Java8中被取消,我们不做深入介绍)。

2、垃圾回收GC,分为2种,一是Minor GC,可以可以称为YGC,即年轻代GC,当Eden区,还有一种称为Major GC,又称为FullGC。

        3、GC原理:

              我们可以看到年轻代包括Eden区(对象刚被new出来的时候,放到该区),S0和S1,是幸存者1区和幸存者2区,从名字可以看出,是当发生YGC,没有被任何其他对象所引用的对象将会从内存中被清除,还被其他对象引用的则放到幸存者区。当发生多次YGC,在S0、S1区多次没有被清楚的对象,则会被移到老年代区域。当老年代区域被占满的时候,则会发送FullGC。

              无论是YGC或是FullGC,都会导致stop-the-world,即整个程序停止一些事务的处理,只有GC进程允许以进行垃圾回收,因此如果垃圾回收时间较长,部分web或socket程序,当终端连接的时候会报connetTimeOut或readTimeOut异常,

        4、从JVM调优的角度来看,我们应该尽量避免发生YGC或FullGC,或者使得YGC和FullGC的时间足够的短。 

JVM要学习的内容有很多

1、Java内存区域

2、垃圾回收器和内存分配策略

3、JVM的执行子系统

4、编写高效优雅的Java程序

5、深入了解性能优化

性能调优

JVM调优

Java程序性能优化

Tomcat

Mysql

<img src="https://pic3.zhimg.com/v2-7d64211d64511c80a0cd8be43e2773c2_b.jpg" data-caption="" data-size="normal" data-rawwidth="789" data-rawheight="897" class="origin_image zh-lightbox-thumb" width="789" data-original="https://pic3.zhimg.com/v2-7d64211d64511c80a0cd8be43e2773c2_r.jpg">

阿里常见面试题:JVM的内存模型有哪些?_第2张图片

<img src="https://pic3.zhimg.com/v2-2ac486a8552a03da63a585bbb33314a6_b.png" data-caption="" data-size="normal" data-rawwidth="750" data-rawheight="1987" class="origin_image zh-lightbox-thumb" width="750" data-original="https://pic3.zhimg.com/v2-2ac486a8552a03da63a585bbb33314a6_r.jpg">

阿里常见面试题:JVM的内存模型有哪些?_第3张图片

<img src="https://pic3.zhimg.com/v2-ed111955bf1fdd6257af3c440ad335ae_b.jpg" data-caption="" data-size="normal" data-rawwidth="1245" data-rawheight="690" class="origin_image zh-lightbox-thumb" width="1245" data-original="https://pic3.zhimg.com/v2-ed111955bf1fdd6257af3c440ad335ae_r.jpg">

阿里常见面试题:JVM的内存模型有哪些?_第4张图片

你可能感兴趣的:(阿里常见面试题:JVM的内存模型有哪些?)