JVM学习总结(一)

目录

1、什么是JVM?

?2、JVM能干什么?

?(转图)

3、JVM的解释执行和编译执行区别?

4、JVM的内存模型(又称运行时数据区,重点)

? ? ? 线程共享区:方法区、堆

? ? ? 线程独占区:栈、本地方法栈、程序计数器

5、JVM四大对象引用类型(重点)

6、内存溢出和内存泄漏的区别

7、JVM类加载机制的过程。(重点)

? ? 加载

? ??验证

? ? ?准备

解析

初始化

8、JVM类加载器有哪些?(重点,双亲委派机制)

? ??



1、什么是JVM?

答:JVM全称是Java Virtual Machine,Java虚拟机。

它是放在Jre运行环境里,将.class后缀的字节码文件解释编译成机器二进制文件的一个东西。

2、JVM能干什么?

答:日常用JAVA语言写的代码文件是.Java的源文件,经过IDEA或Eclipse等编辑器编译后,编译成.class字节码文件。

JVM再将.class字节码文件解释编译成机器二进制文件,这样即可在各种平台上运行(一次编译,到处运行)。

(转图)

3、JVM的解释执行和编译执行区别?

答:解释执行是JVM一行行代码进行编译,最后翻译成机器码。

编译执行是JVM对整个方法进行编译,最后翻译成机器码。

主流JVM都是混合模式编译的,即两种方法混合用。

4、JVM的内存模型(又称运行时数据区,重点)

答:JVM内存模型根据线程是否共享来分:线程共享区、线程独占区

线程共享区:方法区、堆

1、 方法区:存储类的结构信息、常量、静态常量、即时数据等等。

2、 堆:分配的内存最大,存储对象的实例,比如创建对象、New、数据。

线程独占区:栈、本地方法栈、程序计数器

3、 栈:栈又称栈内存,栈的生命周期是随线程创建而创建,线程销毁而销毁,所以不会考虑垃圾回收问题。

栈(JVM Stack),里面包含一组栈帧(Stack Frame),栈帧也是一个内存结构。

栈帧存储了,局部变量表、操作栈、动态链接、方法返回地址等。

方法调用执行过程 = 栈帧压栈、出栈的过程。

(转图)

4、 本地方法栈:JVM调用Nativa即本地方法服务。

5、 程序计数器:线程执行行号指示器、计数器。

5、JVM四大对象引用类型(重点)

答:

  1. 强引用,默认情况下对象都是强引用,GC不会进行垃圾回收。
  2. 软引用:缓存环境的应用,GC在内存不够时对其回收。
  3. 弱引用:GC进行垃圾回收时就会将其回收,不管内存够不够。
  4. 虚引用:GC随时都会回收。

6、内存溢出和内存泄漏的区别

答:

  1. 内存溢出,原来分配的空间大小是int类型,硬塞一个double类型。
  2. 内存泄漏,原来分配的空间,没有经过close等操作释放。

7、JVM类加载机制的过程。(重点)

答: 一共有五步,加载,连接过程(验证,准备,解析),初始化。

加载

JAVA代码经过IEDA等外部编译器编译后,翻译成.class字节码文件。JVM会将字节码文件加载到内存中,即放到运行时数据区的方法区内,对应了内存结构方法区存放类信息这个知识点,在方法区会生成一个java.lang.class对象,作为数据访问入口。

验证

主要是JVM验证这个JAVA类的是否复合规范。其中包括,文件格式验证、元数据验证、字节码验证、符号验证。

准备

主要是为static修饰的变量分配内存、设置初始化数值,比如布尔为false,int为0。不包含final修饰的static,不会为实例变量分配初始值。

解析

主要是把JVM常量池的符号引用转换为直接引用。

初始化

主要是为static修饰的静态变量,分配自定义的值,比如public static int a=1

8、JVM类加载器有哪些?(重点,双亲委派机制)

答:

  1. 启动类(引导类)加载器、
  2. 拓展类加载器、
  3. 系统类加载器、
  4. 自定义加载器。

双亲委派机制:无论哪个加载器加载一个类,最终都会将该类抛给父类加载器去加载,如果父类加载器加载失败,再返回给子类加载器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值