JVM学习(一)

首先感谢马士兵老师的讲解以及狂神的讲解让我受益匪浅

了解JVM

1. Java是怎么从编译到执行

java怎么从编译到执行
ClassLoader 可以通过解释器也可能通过即时编译器JIT
JIT(Just In Time)(执行次数较多的)
JIT就是类似c语言中的exe,直接执行不需要解释(效率会高很多)

2. 什么是JVM

是Java Virtual Machine(是一种规范)
JDK 包括 JRE 包括 JVM

3. 常见的JVM实现

Hotspot、Jrockit、J9、Microsoft VM、TaobaoVM、LiquidVM、azul zing…

好用的IDEA插件,看class文件

  1. BinEd观察ByteCode
  2. JClassLib

Class文件是如何加载的?

class加载
loading: 把字节加载到内存中

verification: 看是否符合JVM标准
preparation: 把静态变量赋默认值(例如int为0,引用为null)
resolution: 常量池中的符号引用转换为内存地址

initializing: 静态变量赋初始值(就是该赋什么值赋什么值)

类加载器ClassLoader(双亲委派机制)

当类被加载到内存中时(二进制文件load到内存中) 同时产生一个该class的对象,这个对象指向load到内存中的class文件。以后访问class文件就通过这个对象来找

双亲委派机制
Bootstrap(根加载器): 加载lib/rt.jar等核心类
Extension(扩展加载器): jre/lib/ext/*.jar下的类
App(自己的类的加载器): 自己写的类classpath中的类
Custom ClassLoader(自定义加载器)

父加载器 不是 类加载器 的加载器(实际上是子加载器中有个成员是父加载器)

双亲委派详细
为什么类加载器用双亲委派?
原因: 主要是为了安全, 次要是为了防止资源浪费

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值