JVM
JVM笔记
jacobbbbbbbb
一个java学习者的学习笔记
展开
-
JVM学习--(九)线程安全和锁优化
JVM学习–(九)线程安全和锁优化一.概述从以前流行的面向过程编程到现在的面向对象编程,面向对象编程极大的提升了现代软件开发的效率和规模,但是不可避免的是对象之间的相互切换,为了让程序维护的更好更好,我们必须引入“高效并发”来保证并发的正确性、安全性和效率性。二.线程安全比较宽泛的定义(没有什么可以操作性):如果一个对象可以被多个线程同时使用,那么它就是线程安全的。比较严谨并且有操作性的...原创 2020-02-15 23:24:39 · 486 阅读 · 0 评论 -
JVM学习--(八)Java内存模型和线程
JVM学习–(八)Java内存模型和线程计算机往往需要并发处理多个线程,一个服务端要同时对多个客户端进行服务。一.硬件的效率与一致性让计算机并发的执行若干的任务和充分利用计算机CPU的性能是因果关系。由于内存的存取与处理器的速度不是一个量级的,所以不得不在这两者间加入一个高速缓存来提高运算速度。但是也带来了一个新的问题:缓存一致性。在多路处理器系统中,每个处理器都有自己的高速的缓存,但是共享...原创 2020-02-15 10:18:41 · 121 阅读 · 0 评论 -
JVM学习--(七)后端编译与优化
JVM学习–(七)后端编译与优化后端主要指的是将Class文件转化成与本地基础设施相关的二进制机器码的过程。与普通的解释器相比,提前编译器和即时编译器的加入优化了后端的过程,虽然两者都不是一个虚拟机所必备的,确实一个虚拟机好坏的重要衡量标准之一。即时编译器java虚拟机是通过解释执行的,当虚拟机发现某个方法或者代码块运行的特别频繁,就会把这些代码认定为“热点代码”,就会在运行时把这些代码转成...原创 2020-02-09 21:33:20 · 296 阅读 · 0 评论 -
JVM学习--(六)前端编译与优化
JVM学习–(六)前端编译与优化一般说的“编译期”是比较宽泛的概念,主要可以指三个方面:1️⃣前端编译器。指的是吧.java文件转化成 .class文件的过程。2️⃣即时编译器。指的是运行期把字节码转成机器码的过程。3️⃣提前编译器。直接把程序编译成与目标机器指令集相关的二进制代码。这里主要指的是前端编译器,由于在这里对于效率的优化措施基本上是没有的,优化主要针对的是程序员的编码效率和语...原创 2020-02-09 10:20:55 · 228 阅读 · 0 评论 -
JVM学习--(五)虚拟机字节码执行引擎
JVM学习–(五)虚拟机字节码执行引擎执行引擎是Java虚拟机核心的组成部分之一,所有虚拟机的概念模型都是相同的,但是在实现的过程中,不同的虚拟机不同,通常会有解释执行以及编译执行,也可以两者兼得。从外观上来看,所有虚拟机的执行引擎都是相同的,因为他们都是输入字节码的二进制流,输出的是执行结果。...原创 2020-02-08 11:22:13 · 94 阅读 · 0 评论 -
JVM学习--(四)虚拟机类加载机制
JVM学习–(四)虚拟机类加载机制当源码被编译成为class文件后,就需要加载到虚拟机之中被运用和使用,这个过程被称为虚拟机的类加载机制。类加载机制只要通过加载、连接(验证、准备、解析)、初始化、使用、卸载。类型的加载连接和初始化过程都是在程序运行的过程中完成的,给java带来了天生可以动态扩展的优势。加载 验证 准备 初始化以及卸载必须顺序开始,但解析阶段某些情况下可以在初始化后进行。...原创 2020-02-03 15:34:29 · 119 阅读 · 0 评论 -
JVM学习--(三)类文件结构
JVM学习–(三)类文件结构本节会主要通过《深入理解JAVA虚拟机》上的一个实例,通过自己重新编译分析,来呈现class文件的结构。一.源码文件package org.fenixsoft.clazz;public class TestClass { private int m; public int inc(){ return m+1; }}二...原创 2020-02-02 09:27:19 · 174 阅读 · 0 评论 -
JVM学习--(二)垃圾收集器与内存分配策略
垃圾收集器与内存分配策略垃圾回收主要完成了三件事情:确定哪些垃圾需要回收,什么时候进行回收以及如何把垃圾回收。此篇仅针对JAVA堆的垃圾回收。一.哪些垃圾需要回收(判断对象已死)1.是否存活算法:1️⃣引用计数算法:如果引用则加1,任何时候都没有引用则为0,这时候虚拟机就可以将它回收。致命缺点:容易存在循环引用,引起内存泄漏。2️⃣可达性分析算法:以GC ROOTS为起点进行遍历,如果对...原创 2020-01-31 15:36:24 · 337 阅读 · 0 评论 -
JVM学习--(一)Java内存区域与内存溢出异常
Java内存区域与内存溢出异常一.Java技术体系JDK:Java程序设计语言、JVM、Java类库三部分所构成 支持Java程序开发的最小的环境JRE:JVM以及Java类库API的Java SE API子集两部分所构成 支持程序运行的标准环境二.JVM内存区域分布1.程序计数器程序计数器本质上是标记下一条需要执行的字节码指令。特点:1.线程私有,每个线程都有自己的程...原创 2020-01-29 22:53:20 · 140 阅读 · 0 评论