![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
成分sjz
路漫漫
展开
-
深入理解java虚拟机----第二章java内存区域与内存溢出异常
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域:方法区、虚拟机栈、本地方法栈、堆、程序计数器 程序计数器 1.定义:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 2.它是线程独...原创 2018-07-24 00:59:07 · 170 阅读 · 1 评论 -
深入理解java虚拟机---第三章垃圾收集器与内存分配策略
3.1 概述 哪些内存需要回收? 什么时候回收? 怎么回收? 这里垃圾回收器关注的是Java堆和方法区的内存,程序计数器、虚拟栈、本地方法栈三个区域会随着线程而生,随着线程而灭, 不用管他。 3.2对象已经死吗 引用计数算法:它很难解决对象之间相互循环引用的问题 可达性分析算法 当一个对象到GC Roots没有任何引用链时,则证明对象时不可用的 GC Roots的对象包括下面几种: ...原创 2018-07-24 23:15:21 · 159 阅读 · 0 评论 -
深入理解java虚拟机----第六章 类文件结构
代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。 6.1 概述 由于最近十年内虚拟机以及大量建立在虚拟机之上的程序语言如雨后春笋般出现并蓬勃发展,将我们编写的程序编译成二进制本地机器码(Native Code)已不再是唯一的选择,越来越多的程序语言选择了操作系统和机器指令集无关的、平台中立的格式作为程序编译后的存储格式。 6.2 无关性的基石 ...原创 2018-07-25 19:59:08 · 255 阅读 · 0 评论 -
深入理解java虚拟机----第七章虚拟机类加载机制
7.1 概述 虚拟机把描述类的数据从Class文件加载到内存,对数据进行校验,转换解析,初始化,最终形成可以被java虚拟机直接使用的java类型,这就是类加载机制。 7.2 类的加载时机 类加载时机 类从被加载到内存中到卸载出内存,所经过的生命周期为:加载-验证-准备-解析-初始化-使用-卸载,其中验证-准备-解析三个部分统称为连接。 解析阶段和其他的阶段不同,解析阶段可以在初始化之后执行...原创 2018-07-26 02:59:14 · 164 阅读 · 0 评论 -
深入理解java虚拟机----早期(编译期)优化
10.1 概述 java的编译期可能指的以下三种: 前端编译器:将*.java文件变成*.class文件,例如Sun的Javac、Eclipse JDT中的增量式编译器(ECJ) JIT编译器(Just In Time Compiler):将字节码变成机器码,例如HotSpot VM的C1、C2编译器 AOT编译器(Ahead Of Time Compiler):直接把*.java文件编译...原创 2018-07-29 01:17:34 · 149 阅读 · 0 评论 -
深入理解java虚拟机----第八章虚拟机字节码执行引擎
8.1 概述 执行引擎:输入字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果 8.2 运行时栈帧结构 栈帧是支持虚拟机进行方法调用和方法执行的数据结构。它存储在运行时数据区的虚拟机栈中。 每一个方法的从开始到完成的过程,都对应了一个栈帧的入栈和出栈的过程。 一个栈帧包含了:局部变量表,操作数栈,动态连接,方法返回地址。 局部变量表和操作数栈在编译的时候,已经可以完全确定,并...原创 2018-07-26 12:33:35 · 227 阅读 · 0 评论 -
深入理解java虚拟机----第十一章晚期优化
11.1 概述 在部分的商用虚拟机(Sun HotSpot、IBM J9)中,Java 程序最初是通过解释器(Interpreter)进行解释执行的,当虚拟机发现某个方法或代码块的运行特别频繁时,就会把这些代码认定为“热点代码” (Hot Spot Code)。为了提高热点代码的执行效率,在运行时,虚拟机将会把这些代码编译成与本地平台相关的机器码,并进行各种层次的优化,完成这个任务的编译...原创 2018-07-30 02:44:42 · 332 阅读 · 0 评论 -
深入理解java虚拟机----java内存模型与线程
12.1 概述 衡量一个服务性能的高低好坏,每秒事务处理数是最重要的指标之一,它 着一秒内服务端平均能响应的请求总数,而TPS的与程序的并发能力又有非常密切的关系。 12.2 硬件的效率与一致性 因为有缓存一致性,所以要有一些操作来保证安全。 12.3 java内存模型 java虚拟机规范中试图定义一种java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让java程序在...原创 2018-07-30 20:05:59 · 292 阅读 · 0 评论 -
深入理解java虚拟机----第十三章线程安全与锁优化
这一部分和java并发编程实战中讲的很多东西一样,所以可以对照着看。 13.1 概述 对于这部分的主题“高效并发”来讲,首先需要保证并发的正确性,然后在此基础上实现高效。本章先从如何保证并发的正确性和如何实现线程安全讲起。 13.2 线程安全 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个...原创 2018-08-01 21:30:36 · 272 阅读 · 0 评论