
Java虚拟机
文章平均质量分 92
Java虚拟机相关
小海子l
keep learning
展开
-
Java虚拟机-Class类文件的结构
点击查看原文 Class类文件的结构 Class文件是一组以8个字节为基础单位的二进制流,各个数据严格按照顺序紧凑地排列在文件之中,中间没有添加任何分隔符。文件格式采用一宗类似于C语言结构体的伪结构来存储数据,这种伪结构只要两种数据类型:无符号数和表 无符号数:属于基本的数据类型,以u1、u2、u4、u8来分别表示一个字节、2个字节、4个字节和8个字节的无符号数。无符号数可以用来描述数字、索引引用、数量值或者按照UTF-8编码构字符串值 表:是由多个无符号数或者其他表作为数据项构成的符合数据类型,所原创 2021-02-03 00:17:05 · 196 阅读 · 0 评论 -
Java虚拟机-经典垃圾回收器
原文链接 上图列举了七种作用于不同分代的垃圾收集器,如果两个收集器存在连线就说明可以搭配使用。收集器所处的区域表示它所属的年轻代还是老年代 属于年轻代的回收器 Serial收集器 简单高效且内存消耗小,适用于客户端模式下的虚拟机 该收集器是一个单线程工作的。意思是当它在进行垃圾回收时,必须暂停其他所有工作线程,直至它收集结束。Serial和Serial Old收集器的运行过程如图所示: ParNew收集器 Serial收集器的的多线程版本,除了同时使用多个线程进行垃圾回收之外其余行为与Serial收集器原创 2021-01-31 22:45:12 · 187 阅读 · 0 评论 -
Java虚拟机-垃圾回收
原文链接 回收的是什么? 答:运行程序中没有任何指针引用的对象,这个对象就是需要被回收的垃圾 垃圾回收算法 标记阶段 在GC执行垃圾回收之前,首先需要区分出内存中那些是存活的对象,那些是已经死亡的对象。只有被标记为已死亡的对象,GC才会在执行垃圾回收时,释放掉其存活所占用的内存空间。此过程被称为垃圾标记阶段 当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡 判断对象存活的有两种方式:引用计数算法和可达性分析算法 引用计数算法(Reference Counting) 描述:对每一个对象原创 2021-01-14 22:32:40 · 174 阅读 · 0 评论 -
Java虚拟机初探
简介 就在上周,我完成了自毕业以来的第一次跳槽。期间经历了一些笔试和面试,考察内容无外乎是Java基础知识,Java高级特性,Java虚拟机,MySQL数据库和缓存相关的问题。这其中最让我手足无措的是Java虚拟机这部分内容,在此之前我并没有系统的学习过,也没有主动去了解它,基本上是随查随用。可这种方式不能长久的记忆,随通过《深入理解Java虚拟机:JVM高级特性与最佳实践(第三版)》进行系统的学习,并将此书包含的知识点记录如下,如有错误,请指出。 主体 第一部分 Java内存区域与溢出异常 运行时数据区原创 2020-07-17 01:09:22 · 194 阅读 · 0 评论 -
Java虚拟机-运行时数据区
简图 线程私有区域:虚拟机栈、本地方法栈和程序计数器 线程共享区域:堆和方法区(元空间区) 线程私有区域 程序计数器 作用:读取程序计数器的值来选取下一条字节码指令,并完成分支、循环、跳转、异常处理、线程回复等 程序计数器是一个很小的内容空间,可以看做是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型中,字节码解释器工作是通过改变这个计时器的值来选取下一条需要执行的字节码指令,他是程序控制流的指示器,分支、循环、跳转、异常处理、线程回复等基础功能都需要依赖这个计数器来完成 每个线原创 2020-12-13 23:37:41 · 138 阅读 · 0 评论 -
Java虚拟机-类的加载过程及双亲委派机制
原文链接 类的加载过程 加载 通过全类名获取类的二进制字节流 将字节流所代表的静态存储结构转化为方法区的运行时数据结构 在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的方法入口 从何处获取字节流: 从本地磁盘获取 从网络获取 运行时计算生成(动态代理) 从其他文件生成(JSP文件) 从加密文件中获取 链接 验证 目的:确保Class文件的字节流中包含的信息符合《JAVA虚拟机的》全部约束要求,保证这些信息被当做代码运行后不会危害虚拟机自身的安全 验证的四原创 2021-01-02 21:26:30 · 131 阅读 · 0 评论