![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM知识点
CleslieCH
这个作者很懒,什么都没留下…
展开
-
JVM读书笔记(六):Java内存模型与线程
Java内存模型与线程一、概述二、硬件的效率与一致性处理器与内存的速度矛盾:引入高速缓冲(Cache):将运算需要使用的数据复制到缓存中,让运算能够快速进行, 当运算结束后再从缓存同步回内存之中。 这样的设计解决了速度矛盾,但也引入了新的问题:缓存一致性。每个处理器有自己的高速缓存,又共享 同一主内存。当多个处理器的运算任务都涉及同一块主内存区域时,将可能导致各自的缓存数据不一致。因此原创 2017-04-27 21:21:44 · 376 阅读 · 0 评论 -
JVM读书笔记(五):虚拟机字节码执行引擎
虚拟机字节码执行引擎一、概述所有的java虚拟机的执行引擎都是一致的:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果。二、运行时栈帧结构栈帧是用于支持虚拟机进行方法调用和方法执行的数据结构。存储了方法的局部变量表、操作数栈、动态链接和方法返回地址等信息。编译程序代码的时候,栈帧中需要多大的局部变量表,多深的操作数栈都已经完全确定,并且写入到方法表的Code属性之中因此一个栈帧需原创 2017-04-27 21:20:39 · 379 阅读 · 0 评论 -
JVM读书笔记(四):虚拟机类加载机制
虚拟机类加载机制一、概述类加载机制:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成 可以被虚拟机直接使用的java类型。java语言中,类型的加载、连接、初始化过程都是在程序运行期间完成的。二、类加载的时机类的生命周期: 加载、验证、准备、解析、初始化、使用、卸载其中:验证、准备、解析3个部分统称为连接解析阶段的顺序不是一定的,某些情况下它可以在初始原创 2017-04-27 21:19:48 · 398 阅读 · 0 评论 -
JVM读书笔记(三):类文件结构
类文件结构一、概述二、无关性的基石(一次编写,到处运行):字节码java虚拟机不和任何语言绑定,它只与“Class文件”这种特定的二进制文件格式所关联,Class文件包含了 Java虚拟机指令集和符号表以及若干其他辅助信息。三、Class类文件的结构任何一个Class文件都对应着唯一一个类或接口的定义信息,但反过来,类或接口并不一定都定义在文件里, (比如可以通过类加载器直接生成)Class文件原创 2017-04-27 21:18:56 · 284 阅读 · 0 评论 -
JVM读书笔记(二):垃圾收集器与内存分配策略
垃圾收集器与内存分配策略-XX:+PrintGCDetails一、概述垃圾收集器关注的内存:方法区、java堆(因为这部分内存的分配和回收都是动态的)二、对象已死吗(判断对象是否存活)计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,加一,引用失效时,减一主流的java虚拟机不采用这种方法,原因:难以解决对象之间的循环引用问题可达性分析算法通过一系列成为“GC ROOTS”的对象作为起始原创 2017-04-27 21:17:53 · 331 阅读 · 0 评论 -
JVM读书笔记(一):Java内存区域与内存溢出异常
一、运行时数据区域线程共享:方法区、堆 线程隔离:虚拟机栈、本地方法栈、程序计数器1、程序计数器:当前线程所执行的字节码行号指示器(Java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式实现的,在任何一个确定的时刻,一个处理器核都只会执行一个线程中的指令)若线程执行的是Java方法,计数器记录正在执行的虚拟机字节码指令的地址 若执行的是native方法,计数器值为空程序计数器是唯一一原创 2017-04-27 21:15:59 · 336 阅读 · 0 评论