虚拟机
文章平均质量分 94
九十三大人
不要停止学习,不要停止思考
展开
-
Java内存区域(栈、堆、方法区)详细解说
参考文献:深入学习java虚拟机概览java虚拟机在执行java程序的过程中会把它所管理的内存划分成若干个不同的数据区域。这些区域各有用途,以及创建和销毁的时间。有的区域随着虚拟机的进程的启动而存在,有的则依赖用户线程的启动和结束而建立和销毁。运行时数据区域线程共享区:方法区、堆 线程隔离区:虚拟机栈、本地方法栈、程序计数器java内存区域详解程序计数器: 是一块较小的内存空间,可以看作当原创 2017-12-21 20:52:55 · 1330 阅读 · 0 评论 -
class类文件以及类加载机制(一)
class类文件结构定义:任何一个class文件都对应着惟一一个类或接口的定义信息,反过来说,类和接口并不一定都定义在文件里。class文件是一组以8位字节为基础单位的二进制流,各项数据项目严格按照顺序紧凑排列在class文件中。中间没有任何分隔符,这使得整个class文件中存储的内容几乎是程序运行的必要数据,没有间隙。当遇到需要占用8位字节以上空间的数据项时,则会按照高位在前的方式分割成若干...原创 2018-02-11 20:25:07 · 361 阅读 · 0 评论 -
JAVA内存模型、volatile、线程安全、锁详细解说
一. JAVA内存模型首先,我们要清楚,这里所指的java内存模型和java内存区域 不是一个层次的划分。java内存模型:工作内存和主内存 1、内存模型的目的: 这个内存模型的划分是为了清晰地了解多线程之间,是如何共享数据,独占数据的。 每个线程都是在自己独立的工作内存中进行数据操作的,且数据处理完成后都要入主内存。所以,不难看出,多线程的共享数据是通过主内存来同步的。2、内原创 2018-01-30 16:43:00 · 379 阅读 · 0 评论 -
虚拟机类加载机制
一、定义 虚拟机将class文件加载到内存,并且对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,java中类型的加载、连接和初始化都是在程序的运行期间完成的。二、类加载的生命周期 加载过程:加载 连接过程:验证、准备、解析 初始化过程:初始化 使用过程:使用、卸载 类的加载过程必须按照...原创 2018-03-04 14:36:55 · 115 阅读 · 0 评论 -
Class类文件结构
Class类文件结构:魔数版本号常量池访问标志类索引、父类索引和接口索引集合字段表集合方法表集合属性表集合任何一个class文件都对应着惟一 一个类或接口的定义信息,反过来说,类和接口并不一定都定义在文件里。class文件是一组以8位字节为基础单位的二进制流,各项数据项目严格按照顺序紧凑排列在class文件中。中间没有任何分隔符,这使得整个class文件中存储的内容几...原创 2018-07-02 14:53:41 · 272 阅读 · 1 评论 -
JVM字节码指令集
加载和存储指令:用于将数据在栈帧中的局部变量表和操作数栈之间的来回传输。 将一个局部变量加载到操作栈:iload、iload_<n>、lload、lload_<n>、fload、fload_<n> 、dload、dload_<n>、aload、aload_<n>将一个数值从操作数栈保存到局部变量表:istore、isto...原创 2018-07-03 16:17:42 · 540 阅读 · 0 评论 -
虚拟机字节码执行引擎
摘自《深入理解 Java 虚拟机:JVM 高级特性与最佳实践》(第二版) 代码编译的结果是从本地机器码转变为字节码,是存储格式发展的一小步,却是编程语言发展的一大步。概述 执行引擎是 Java 虚拟机最核心的组成部分之一。“虚拟机” 是一个...原创 2018-07-10 16:48:38 · 334 阅读 · 0 评论 -
垃圾收集器与内存分配策略
思考GC的三个问题: 1. 哪些内存需要回收 2. 什么时候回收 3. 如何回收1.为什么要了解GC和内存分配(哪些内存需要回收)当需要排查各种内存溢出、内存泄漏问题时,当垃圾收集称为系统达到更高并发的瓶颈时,我们就需要对这些”自动化”的技术实施必要的监控和调节。 程数计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,分配的内存是在编译器就已经已知的。因此这几个区域...原创 2018-07-11 18:40:04 · 198 阅读 · 0 评论