JVM
erwang1123
星空不负赶路人,岁月不负有心人
展开
-
JVM虚拟机 第五部分
第三部分:高效并发 一、Java内存模型与线程 1.概述 这里我们会介绍虚拟机如何实现多线程、多线程之间由于共享和竞争数据而导致的问题以及解决方案。 2.硬件的效率与一致性 3.Java内存模型 定义java内存模型并非一件容易的事情,模型必须定义得足够严谨,但是同时定义的又必须足够宽松,使得虚拟机的实现能有足够的自由空间区利用硬件的各种特性来获取更好的执行速度。 3.1 主内存与工作内存 java内存模型规定了所有的变量都存储在主内存中。每条线程还有自己的工作内存,线程的工作内存保存了被该线程使用到的变量原创 2020-09-04 00:31:55 · 168 阅读 · 0 评论 -
JVM虚拟机 第四部分
二、虚拟机字节码执行引擎 1.概述 执行引擎是java虚拟机最核心的组成部分之一。执行引擎在执行代码的时候可能有解释执行(通过解释器执行),也可能有编译执行(通过即时编译器执行),当然也可能两者兼备,甚至还包含几个不同级别的编译器执行引擎, 2.运行时栈帧结构 栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构,它是虚拟机运行时数据区中的虚拟机栈的栈元素,栈帧存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。 2.1 局部变量表 局部变量表的容量一变量槽Slot为最小单位。一个变量槽可以存放原创 2020-09-03 22:32:36 · 95 阅读 · 0 评论 -
JVM虚拟机 第三部分
第二部分:虚拟机执行子系统 一、虚拟机类加载机制 1.概述 Class文件的各种信息,最终都需要加载到虚拟机中之后才能被运行和使用,而虚拟机如何加载这些Class文件?Class文件中的信息进入到虚拟机之后会发生什么变化?这些都应该是我们思考的问题。 虚拟机把描述类的数据加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 2.类加载的时机 具体见下图。 类从被加载到虚拟机内存开始、到卸载出内存为止,它的整个生命周期包括了:加载原创 2020-09-03 22:07:55 · 168 阅读 · 0 评论 -
JVM虚拟机详解 第二部分
二、垃圾回收器与内存分配策略 1.概述 说起垃圾回收,GC的历史其实比java要久的多。第一门使用内存动态分配和垃圾回收技术的语言是Lisp。 我们需要思考几个问题? 那些内存需要回收? 什么时候回收? 怎么回收? 2.对象已死? 2.1 引用计数算法 给对象中添加一个引用计数器,每当有一个地方引用它是,计数器值就加1;当引用失败时,那么计数器值就减1;任何时刻计数器都为0的对象就是不可能再被使用的。 客观的说,引用计数算法实现简单,判定效率高,但是它最大的缺点就是难以解决循环引用的问题。原创 2020-09-03 00:07:02 · 138 阅读 · 0 评论 -
JVM虚拟机详解 第一部分
JVM虚拟机详解 全文和《深入理解Java虚拟机:JVM最高特性与最佳实践》对照学习。 我们会自己去掉一些不重要或者难以理解的部分,留下的都是基础知识或者你应该掌握的知识。 第一部分:自动内存管理机制 一、Java内存区域与内存溢出异常 1.概述 Java和C++之间有一堵有内存动态分配和垃圾收集技术所围成的高墙,墙里面的人想出来,墙外面的人想进去。 对于Java程序员而言,在虚拟机的自动内存管理机制的帮助下,我们可以不用为自己的每一个new的动作去做一个对应的回收操作,而且不容易出现内存原创 2020-09-02 21:57:33 · 152 阅读 · 0 评论