3年以上工作经验面试java高级工程师必备知识--jvm内存模型分区及其功能

    jvm是java面试高级工程师,月薪翻过15k,永远绕不开的坎,我就是深受其害,故工作稳定下来后,开始深入学习研究下jvm,实现一劳永逸,以后每次面试前翻出来瞟一眼,顺利通过jvm面试题。

    java编程之所以当前比较流行,主要有两方面原因,一是java在jvm上运行,能实现跨平台,一处编译,处处运行;另外一个是,java有自动回收垃圾的机制,可以将程序员从手动回收垃圾的烦恼中解脱出来。这两点都和jvm相关,故可以看出来,jvm为何是高级程序员必备。

   1、 jvm运行时数据分区为:(1)、线程共享数据区:java虚拟机栈、本地方法栈、程序计数器。

                                        (2)、线程隔离数据区:堆、方法区。

内存模型图如下:

    

2、线程隔离区:

    (1)、程序计数器:

            i、定义:当前线程所执行的字节码的行号指示器。

            ii、特点:

                 ①内存空间较小,内存区域中唯一不存在OM(OutOfMemoryError)的区域。

                 ②字节码解释器工作时,通过改变计数器的值来选取下一条要执行的字节码指令、分支、循环、跳转、异常处理、线                         程恢复等基础功能都需要毅力陈旭计数器。

                  ③线程私有内存。为了线程切换后能恢复到真去的执行位置,每条线程都需要有一个独立的程序计数器,各条线程之                        间计数器互不影响,独立存储,

    (2)、Java虚拟机栈:

               i、定义:作用于方法执行的一块java内存区域。

               ii、特点:

                    ①每个方法在执行的同时都会创建一个栈帧(Stack Framel),用于存储局部变量表、操作数栈、动态链接、方法出                          口等信息。每个方法从调用直至执行完成,就对应着一个栈帧在虚拟机中入栈和出栈的过程。

                    ②局部变量表存放了编译期可知的8种基本数据类型(boolean、char、byte、int、short、long、double、float)及对                         象的引用(reference类型)。

                   ③如果线程请求深度大一虚拟机所允许的深度,将抛出StackOverFlow异常。

    (3)、本地方法栈:

              i、定义:作用于本地方法执行的一块内存区域。

              ii、特点:

                ①与java虚拟机栈相同,每个方法在执行的同时都会创建一个栈帧(Stack Framel),用于存储局部变量表、操作数                         栈、动态链接、方法出 口等信息。每个方法从调用直至执行完成,就对应着一个栈帧在虚拟机中入栈和出栈的过程。

                 ②IBM的Hotshot将虚拟机栈和本地方法栈合二为一。

                 ③主要用于调用非java语言(例如调用cpu的指令接口),提供类似于接口的功能。

3、线程共享区:

    (1)、堆:

                i、定义:Java中存放内存实例对象实例的区域,几乎所有的对象实例都是在这里获取内存。

                ii、特点:

                      ①java虚拟机所管理的内存中最大的一块。

                      ②垃圾收集器管理的主要区域。

                      ③最大堆内存调整 -Xmx,最小堆内存调整 -Xms.

                      ④分为新生代和老年代,新生代又分为To Space、From Space、Eden。

    (2)、方法区:

               i、定义:用于存储被虚拟机加载的类信息、常量、静态变量、即时编译的代码等数据。

               ii、特点:

                       ①该区域的垃圾回收,主要是对常量池的回收和类的卸载。

                       ②Hotspot使用永久代来实现方法区。例如Jrockit、IBM。

    

发布了20 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_41267342/article/details/96996044