![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA虚拟机
飞默
这个作者很懒,什么都没留下…
展开
-
第二章 Java内存区域与内存溢出异常
2.2 运行时数据区域 方法区堆虚拟机栈本地方法栈程序计数器 2.2.1 程序计数器 是一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器。 字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令。 由于Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执行一条线程中的指令。因此,为了线原创 2017-03-09 11:33:17 · 323 阅读 · 0 评论 -
第三章 垃圾收集器与内存分配策略
3.2 对象已死吗?在堆里面存放着Java世界中几乎所有的对象实例,下面就让我们了解下垃圾收集器在对堆进行回收前,如何判断哪些对象还存活,哪些已经死去3.2.1 引用计数算法实现的原理:大致是给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。但是Java虚拟机没有选择引用计数算法来管理内存,其中最主要的原因原创 2017-03-09 11:35:32 · 312 阅读 · 0 评论 -
第八章 虚拟机字节码执行引擎
执行引擎是Java虚拟机最核心的组成部分之一。执行引擎在执行Java代码的时候可能有解释执行(通过解释器执行)和编译执行(通过即时编译器产生的本地代码执行)两种选择,也可能两者兼备,甚至还可能包含几个不同级别的编译器执行引擎。但从Java虚拟机规范中描述的执行引擎概念模型来说,所有的Java虚拟机的执行引擎都是一样的:它的输入是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。1.运行时原创 2017-03-09 11:42:52 · 459 阅读 · 0 评论 -
第七章 虚拟机类加载机制
虚拟机把描述类的数据从class文件加载到内存中,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类从加载到虚拟机内存开始,到卸载出内存,一共经历了7个步骤: 1.加载 2.验证 3.准备 4.解析 5.初始化 6.使用 7.卸载 对于初始化,Java虚拟机规范做了严格的限制,有且只有四种情况必须立即对类进行“初始化” 遇到new,get s原创 2017-03-09 11:41:54 · 465 阅读 · 0 评论 -
第12章 Java内存模型与线程
Java 内存模型(Java Memory Model –> JMM)用来实现屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。屏蔽硬件差异、保证并发。而程序的功能就是数据流的交互,所以保证数据的快速、正确访问就是Java内存模型的核心。1.主内存与工作内存 Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中原创 2017-03-09 13:41:05 · 250 阅读 · 0 评论 -
第十三章 线程安全与锁优化
一、线程安全线程安全:指当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调用和交替执行,也不需要进行额外的同步,或者在调用方法进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那么喝个对象就是线程安全的。1.Java语音中的线程安全我们可以根据线程安全的“安全程度”由强至弱来排序呢,将Java语音中各种操作共享的数据分为五类 1.不可变 2.绝对线程安全 3.相对线程安全原创 2017-03-09 13:42:10 · 540 阅读 · 0 评论