随笔分类 - JVM
摘要:解释执行 https://www.cnblogs.com/z-sm/p/6239377.html Java代码是解释执行的,先编译成字节码,这些字节码在JVM实例上被一行行解释执行。有两种解释执行的实现方式: 基于内存栈——在软件层面基于内存栈解释执行,传统的字节码解释器。 基于CPU寄存器——在硬
阅读全文
摘要:概要:线程的实现方法、 线程调度、线程状态及转换、线程安全(5种分类、3种实现方法、锁优化技术) 进程是OS进行资源分配的基本单位,线程是CPU进行任务调度的基本单位。 1、线程的实现方法 可参阅 我是一个进程#线程-码农翻身 1.1、使用OS的内核线程(Kernel-Level Thread,KL
阅读全文
摘要:概要:Java制定的 内存模型 是为了在各种硬件和OS下达到一致的内存访问效果,但它的引入也带来了并发下的一致性问题(因为有各自的变量副本)。因此Java内存模型的主要内容: 一是内存模型的结构(内存划分); 二是解决在这种模型下并发(多线程)访问时变量的一致性问题,包括原子性、可见性、有序性。(解
阅读全文
摘要:这里以HotSpot为例,且所说的对象指普通的Java对象,不包括数组和Class对象等。 1、对象创建的过程 1、类加载、解析、初始化:虚拟机遇到new时先检查此指令的参数是否能在常量池中找到类的符号引用,并检查符号引用代表的类是否被加载、解析、初始化,若没有则先进行类加载。 2、对象内存分配:类
阅读全文
摘要:(PS:多为《深入理解Java虚拟机——JVM高级特性与最佳实践》一书的阅读笔记,权记于此以备忘) JVM主要包括 类加载子系统、运行时数据区、执行引擎(JIT Comile、Garbage Collector) 、本地方法接口/库 三部分。 纲要(与上述JVM的三部分大致对应): 类加载(加载、连
阅读全文
摘要:本文讨论的选项是针对HotSpot虚拟机的。 1、选项分类及语法 HotspotJVM提供以下三大类选项: 1.1、标准选项 这类选项的功能是很稳定的,在后续版本中也不太会发生变化。 运行java或者 java -help 可以看到所有的标准选项。 语法:所有的标准选项都是以 - 开头,比如-ver
阅读全文
摘要:总的来说,JVM管理的内存包括堆内存和非堆内存。堆就是Java代码可及的内存,是留给开发人员使用的;非堆就是JVM留给自己用的,所以方法区、JVM内部处理或优化所需的内存(如JIT编译后的代码缓存)、每个类结构(如运行时常量池、字段和方法数据)以及方法和构造方法的代码都在非堆内存中。 因此这里所说的
阅读全文
摘要:概要: why:为什么回收,见what what:垃圾回收哪些内存(不可达对象的确定) when:何时执行GC(安全点、安全区域) how:如何回收(原理——垃圾回收算法、实现——垃圾收集器) 1、垃圾回收哪些内存 JVM运行时数据区中,线程私有的程序计数器、虚拟机栈、本地方法栈随线程的创建和退出而
阅读全文
摘要:1、JVM定义 Java虚拟机(Java Virtual Machine),简称JVM。当我们说起Java虚拟机时,可能指的是如下三种不同的东西:. 抽象的虚拟机规范 规范的具体实现 一个运行中的虚拟机实例 Java虚拟机抽象规范仅仅是一个概念,在《The Java Virtual Machine
阅读全文