Java面试复习总结之jvm

面试的时候经常会问到与jvm有关的面试题。若答案有问题还请各位指正。

question:请你谈谈jvm?

answer:jvm即Java虚拟机,可以加载Java字节码,也是Java能够多平台运行的关键。

                jvm在内存上面分为五个区:堆、栈、方法区、程序计数器、本地方法栈。

                堆区主要是储存我们new出来的对象实例,内存是公有内存对所有线程可见;

                栈区运行时产生的局部变量和方法调用,为私有内存即不是所有线程可见的;

                方法区,储存已加载的类信息、常量、静态变量、方法代码,为公有内存为所有线程可见,因此方法区也叫非堆。


                一个Java类完整的生命周期会经历五个阶段:加载、连接、初始化、使用、卸载。加载、连接、初始化三个阶段一起叫做类加载。

加载:当jvm预计会使用该类的时候,会给出类的路径,根据类的路径找到类的字节码文件。

连接:会做验证和准备。验证主要是验证这个类是否符合字节码的格式、变量方法等是否符合标准。准备是为静态变量分配初始内存。

初始化:初始化静态代码块、静态语句。

使用:

卸载:该类满足Java gc回收机制就会被回收不掉,在有向图中是不可达的和程序不会再使用这些对象将会被gc回收。其实就是方法区清空消息。


猜你喜欢

转载自blog.csdn.net/wolovexiexiongfei/article/details/79886584
今日推荐