![](https://img-blog.csdnimg.cn/20210518180211968.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
JVM详解
文章平均质量分 91
JVM学习
雫#1999
道阻且长
展开
-
JVM14-垃圾回收-垃圾回收器
文章目录1 垃圾回收器1 垃圾回收器原创 2021-06-24 20:40:18 · 310 阅读 · 0 评论 -
JVM13-垃圾回收-垃圾回收相关概念
文章目录1 垃圾回收相关概念1.1 System.gc()的理解1.2 内存溢出和内存泄漏1.2.1 内存溢出1.2.2 内存泄漏1.3 Stop The World的理解1.4 程序的并行和并发1 垃圾回收相关概念1.1 System.gc()的理解在程序中,调用System.gc()或者Runtime.getRuntime().gc()方法,会显式触发Full GC,同时对年轻代和老年代进行垃圾回收,尝试释放失去引用的垃圾对象所占用的内存空间,但一般情况下,垃圾回收应该是自动进行的,除非一些原创 2021-06-18 01:41:13 · 160 阅读 · 0 评论 -
JVM12-垃圾回收-垃圾回收相关算法
文章目录1 垃圾回收相关算法1.1 垃圾标记阶段1.2 标记阶段: 引用计数算法1.3 标记阶段: 可达性分析算法1.41 垃圾回收相关算法1.1 垃圾标记阶段在堆中存放着几乎所有的实例对象,在GC执行垃圾回收之前,首先需要区分内存中哪些是存活对象,哪些是已死亡(失去引用)的对象,GC将会回收被标记为死亡的对象,释放掉其所占用的内存空间,因此这个过程可以称为垃圾标记阶段判断一个对象是否死亡,即是否不被任何指针所引用有两种算法:引用计数算法和可达性分需算法1.2 标记阶段: 引用计数算法引原创 2021-06-17 16:03:15 · 119 阅读 · 0 评论 -
JVM11-垃圾回收-垃圾回收概述
文章目录1 垃圾回收概述1.1 什么是垃圾1.2 为什么需要GC1.3 早期垃圾回收1.4 Java垃圾回收机制1 垃圾回收概述垃圾回收,不是Java的伴生物,早在1960年,第一门开始使用内存动态分配和垃圾回收技术的Lisp语言诞生关于垃圾回收,有3个经典问题:1,哪些内存需要回收?2,什么时候回收?3,如何回收?如今垃圾回收已是Java的招牌能力,极大的提高了开发效率,且垃圾回收已经成了现代语言的标配,Java的垃圾回收机制也在不断的演进中1.1 什么是垃圾垃圾: 指程序运原创 2021-06-15 14:44:28 · 169 阅读 · 0 评论 -
JVM10-关于String
文章目录1 关于String1.1 String的基本特性1.2 String的内存分配1.3 String的基本操作1.4 字符串拼接操作1.5 intern()的使用1.6 StringTable的垃圾回收1.7 G1中的String去重操作1 关于String1.1 String的基本特性1,String类型的值即字符串String str = "str";String str2 = new String("str2");2,String类是final的,不可被继承3,Stri原创 2021-06-15 00:59:26 · 1127 阅读 · 0 评论 -
JVM09-执行引擎
文章目录1 执行引擎1.1 执行引擎概述1.2 Java代码的编译器1.3 解释器1.4 JIT编译器1.4.1 HotSpot VM中JIT的分类1.4.2 热点代码1.4.3 热点探测1.4.4 热度衰减1.5 字节码指令的执行过程1 执行引擎1.1 执行引擎概述执行引擎是JVM核心组成之一,由于操作系统只能识别机器指令,想要在机器上执行程序,不管什么语言最终都需要转换成机器指令,JVM中的执行引擎主要将字节码指令转换为机器指令并执行执行引擎的大致工作过程:1,执行引擎执行的过程中根据原创 2021-06-10 19:27:58 · 99 阅读 · 0 评论 -
JVM08-对象的实例化和访问
文章目录1 对象的实例化2 对象的内存布局3 对象的访问定位1 对象的实例化2 对象的内存布局3 对象的访问定位原创 2021-06-08 23:57:12 · 127 阅读 · 0 评论 -
JVM07-运行时数据区-方法区
这里写目录标题1 方法区1 方法区原创 2021-06-03 20:37:38 · 115 阅读 · 0 评论 -
JVM06-运行时数据区-堆
文章目录1 堆1.1 堆的核心概述1.2 设置堆的大小和OOM1.3 年轻代和老年代1.4 对象分配过程1.5 MinorGC MajorGC FullGC1.6 堆空间的分代1.7 内存分配策略1.8 为对象分配内存 TLAB1.9 堆空间的参数设置1.10 堆不是分配对象的唯一选择1 堆1.1 堆的核心概述一个Java进程,JVM实例中堆是唯一的,是所有线程共享的堆的大小可以通过参数调整,堆在JVM启动时被创建,创建后空间大小不可更改,是JVM管理的最大一块内存空间JVM规范规定堆可以处原创 2021-06-02 16:56:26 · 110 阅读 · 0 评论 -
JVM05-运行时数据区-本地方法栈
文章目录1 本地方法接口&本地方法库1.1 本地方法 Native Method1.2 为什么使用本地方法1.3 本地方法接口&本地方法库2 本地方法栈 Native Method Stack1 本地方法接口&本地方法库在学习运行时数据区内的本地方法栈前,先来看看本地方法接口和本地方法库本地方法接口和本地方法库并不在运行时数据区内1.1 本地方法 Native Method对于本地方法的定义:一个本地方法就是一个看起来是Java方法但实际执行时调用的却是其它语言原创 2021-05-25 15:44:28 · 79 阅读 · 0 评论 -
JVM04-运行时数据区-虚拟机栈
文章目录1 JVM Stack 虚拟机栈1.1 虚拟机栈简介1.2 虚拟机栈的作用1.3 Stack Frame 栈帧1.3.1 局部变量表1 JVM Stack 虚拟机栈1.1 虚拟机栈简介由于跨平台的设计,Java的指令都是根据栈来设计的,不同平台的CPU架构不同,所以不能设计为基于寄存器架构,JVM中栈管运行,堆管存储每个线程被创建时都会创建一个虚拟机栈,该虚拟机栈是线程私有的,生命周期与线程相同,其内部是一个一个的栈帧 Stack Frame,一个栈帧中就对应一个Java方法上述代原创 2021-05-25 14:28:23 · 94 阅读 · 0 评论 -
JVM03-运行时数据区-程序计数器
文章目录1 运行时数据区1.1 运行时数据区概述1.2 PC Register 程序计数器1.2.1 程序计数器简介1.2.2 程序计数器作用1.3 JVM Stack 虚拟机栈1.3.1 虚拟机栈简介1.3.2 虚拟机栈的作用1.3.3 Stack Frame 栈帧1.3.3 局部变量表1.3.4 操作数栈1.3.5 代码追踪1.3.6 栈顶缓存技术1.3.7 动态链接1.3.8 方法的调用 解析与分派1.3.9 方法的返回地址1.3.10 一些附加信息1.3.11 关于虚拟机栈的问题1 运行时数原创 2021-05-24 18:00:09 · 423 阅读 · 0 评论 -
JVM02-类加载子系统
文章目录1 类加载子系统1.1 类加载子系统的作用1.2 Loading 加载阶段1.2.1 类加载器分类1.2.2 用户自定义类加载器1.2.3 ClassLoader类的常用方法及获取方法1.2.4 类加载机制 (双亲委派机制)1.3 Linking 链接阶段1.4 Initialization 初始化阶段1.5 类加载子系统的补充1 类加载子系统1.1 类加载子系统的作用类加载子系统负责从文件或网络中加载class文件,class文件在文件开头有特定的文件标识,即cafe babe类原创 2021-05-19 17:54:54 · 77 阅读 · 0 评论 -
JVM01-JVM与Java体系结构
文章目录1 JVM与Java体系结构1 JVM与Java体系结构原创 2021-05-18 18:03:08 · 158 阅读 · 0 评论