JAVA学习笔记——JVM

目录

一 为什么要学习JVM

二 了解JVM

2.1 什么是JVM

2.2 虚拟机与Java虚拟机

三 JVM结构

3.1JVM的整体结构图

3.2 JVM的生命周期

四 类加载子系统


一 为什么要学习JVM

  • 面试的需要(BATJ、TMD,PKQ等面试都爱问)
  • 中高级程序员必备技能(项目管理、调优的需求)
  • 追求极客的精神(垃圾回收算法、JIT、底层原理等)

二 了解JVM

2.1 什么是JVM

JVM是Java Virtual Machine(JAVA虚拟机)的缩写。

JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。

2.2 虚拟机与Java虚拟机

  • 虚拟机:

        所谓虚拟机(Virtual Machine),就是一台虚拟的计算机。它是一款软件,用来执行一系列虚拟计算机指令。大体上,虚拟机可以分为系统虚拟机和程序虚拟机。

  • Java虚拟机

        Java虚拟机是一台执行Java字节码的虚拟计算机,它拥有独立的运行机制,其运行的Java字节码也未必由Java语言编译而成。

        JVM平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回器,以及可靠的即时编译器。

        Java技术的核心就是Java虚拟机(JVM,Java Virtual Machine),因为所有的Java程序都运行在Java虚拟机内部。

        特点:自动内存管理,自动垃圾回收。

        JVM的位置:

三 JVM结构

3.1JVM的整体结构图

3.2 JVM的生命周期

  • 虚拟机的启动:

        Java虚拟机的启动是通过引导类加载器创建一个初始类来完成的,这个类是由虚拟机的具体实现指定的。

  • 虚拟机的执行:

        一个运行中的Java虚拟机有着一个清晰的任务:执行Java程序。程序开始执行时他才运行,程序结束时他就停止。

  • 虚拟机的退出:

        虚拟机的推出有一下几种情况 :

        1. 程序正常执行结束

        2. 程序在执行过程中遇到了异常或错误而异常终止

        3. 由于操作系统用现错误而导致Java虚拟机进程终止

        4. 线程调用Runtime类或system类的exit方法,或Runtime类的halt方法,并且Java安全管理器也允许这次exit或halt操作。

四 类加载子系统

4.1 类加载器与类的加载过程

  • 类加载器子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识。
  • ClassLoader(类加载器)只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定。
  • 加载的类信息存放于一块称为方法区的内存空间。除了类的信息外,方法区中还会存放运行时常量池信息,可能还包括字符串字面量和数字常

4.2 加载阶段

4.3 链接阶段

4.4 初始化阶段

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值