没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
64页
资源概要:JVM基础知识;类加载子系统;运行时数据区;对象的创建流程与内存分配; 对象内存布局;如何访问一个对象;GC基本原理;串行收集器;并行收集器; 能学到什么:1,JVM底层运行机制和原理;2JVM参数;3,垃圾回收原理;4,垃圾回收器的使用;5,调优实战案例 导语:平时我们所说的JVM广义上指的是一种规范。狭义上的是JDK中的JVM虚拟机。JVM的实现是由各个厂商来做的。比如现在流传最广泛的是hotspot。其他实现:BEA公司 JRocket、IBM j9、zing 号称世界最快JVM、taobao.vm。从广义上讲Java,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语言及其相关的程序都属于Java技术体系中的一员。
资源推荐
资源详情
资源评论
02-JVM虚拟机
灵魂三问:
JVM是什么?
JVM广义上指的是一种规范。狭义上的是JDK中的JVM虚拟机。
为什么要学习JVM?
面试过程中,经常会被问到JVM。
研发过程中,肯定会面临一些重难点问题与JVM有关系。例如:线程死锁、内存溢出、项目性能优
化等等。
基础不牢,地动山摇。想深入掌握Java这门语言,JVM始终是绕不过去的那座大山,早晚得攀。
怎么学习JVM?
JVM虚拟机部分,我们是这么安排的:
1. JVM基本常识
2. 类加载子系统
3. 运行时数据区
4. 一个对象的一生(出生、死亡与内涵)
5. GC垃圾收集器
6. JVM调优相关工具与可调参数
7. 调优实战案例
1. JVM虚拟机概述
1.1 JVM 基本常识
什么是JVM?
平时我们所说的JVM广义上指的是一种规范。狭义上的是JDK中的JVM虚拟机。JVM的实现是由各个厂商
来做的。比如现在流传最广泛的是hotspot。其他实现:BEA公司 JRocket、IBM j9、zing 号称世界最快
JVM、taobao.vm。从广义上讲Java,Kotlin、Clojure、JRuby、Groovy等运行于Java虚拟机上的编程语
言及其相关的程序都属于Java技术体系中的一员。
Java技术体系主要包括如下四个方面。
Java程序设计语言:
Java类库API:
来自商业机构和开源社区的第三方Java类库
Google
1.2 类加载子系统
1.2.1 类加载的时机
类加载主要有四个时机:
1. 遇到 new 、 getstatic 、 putstatic 和 invokestatic 这四条指令时,如果对应的类没有初始
化,则要对对应的类先进行初始化。
2. 使用 java.lang.reflect 包方法时,对类进行反射调用的时候。
3. 初始化一个类的时候发现其父类还没初始化,要先初始化其父类
4. 当虚拟机开始启动时,用户需要指定一个主类(main),虚拟机会先执行这个主类的初始化。
1.2.2 类加载的过程
类加载主要做三件事:
1. 全限定名称 ==> 二进制字节流加载class文件
2. 字节流的静态数据结构 ==> 方法区的运行时数据结构
public class Student{
private static int age ;
public static void method(){
}
}
//Student.age
//Student.method();
//new Student();
1
2
3
4
5
6
7
8
9
Class c = Class.forname("com.hero.Student");1
检查顺序是自底向上:加载过程中会先检查类是否被已加载,从Custom ClassLoader到BootStrap
ClassLoader逐层检查,只要某个classloader已加载就视为已加载此类,保证此类只所有
ClassLoader加载一次。
加载的顺序是自顶向下:也就是由上层来逐层尝试加载此类。
启动类加载器(Bootstrap ClassLoader):
负责加载 JAVA_HOME\lib 目录中的,或通过-Xbootclasspath参数指定路径中的,且被虚拟
机认可(按文件名识别,如rt.jar)的类。由C++实现,不是ClassLoader的子类
扩展类加载器(Extension ClassLoader):
负责加载 JAVA_HOME\lib\ext 目录中的,或通过java.ext.dirs系统变量指定路径中的类库。
应用程序类加载器(Application ClassLoader):
负责加载用户路径classpath上的类库
自定义类加载器(User ClassLoader):
作用:JVM自带的三个加载器只能加载指定路径下的类字节码,如果某个情况下,我们需要加
载应用程序之外的类文件呢?就需要用到自定义类加载器,就像是在汽车行驶的时候,为汽车
更换轮子。
比如本地D盘下的,或者去加载网络上的某个类文件,这种情况就可以使用自定义加载器了。
举个栗子:JRebel
剩余63页未读,继续阅读
资源评论
小小哭包
- 粉丝: 1899
- 资源: 3854
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功