JVM学习记录
文章平均质量分 93
JVM
彤彤的小跟班
985上班族
展开
-
16-JVM(上)-垃圾回收器
目录提前预知提前预知笔记对应视屏:169-课程笔记来源于宋红康老师的java虚拟机课程原创 2021-06-29 15:54:04 · 568 阅读 · 0 评论 -
15-JVM(上)-垃圾回收相关概念
目录提前预知01、垃圾回收相关概念System.gc()的理解代码演示System.gc()手动GC来理解不可达对象的回收内存溢出与内存泄露内存溢出(OOM)内存泄露Stop The World垃圾回收的并行与并发安全点与安全区域引用相关强引用软引用弱引用虚引用终结器引用02、垃圾回收器提前预知笔记对应视屏:154-课程笔记来源于宋红康老师的java虚拟机课程## 03、垃圾回收相关概念01、垃圾回收相关概念System.gc()的理解在默认情况下,通过System.gc()或者Run原创 2021-05-20 08:04:09 · 101 阅读 · 0 评论 -
14-JVM(上)-垃圾回收概述和相关算法
目录提前预知01、垃圾回收概述概念关于垃圾什么是垃圾大厂面试题为什么需要GC早起垃圾回收java垃圾回收机制GC主要关注的区域02、垃圾回收相关算法标记阶段:垃圾标记阶段:对象存活判断算法一:引用计数算法1.引用计数算法概述2.验证javaGC没有使用引用计数算法3.小结算法二:可达性分析算法1.GCRoots2.注意对象的finalization机制1.finalize的具体过程2.finalize中对象复活演示内存分析工具:Jprofiler清除阶段算法一:标记-清除算法执行过程算法二:复制算法执行过程原创 2021-05-18 20:34:00 · 158 阅读 · 1 评论 -
13-JVM(上)-StringTable(有意思的一个章节)
目录提前预知01、String的基本特性为什么JDK9改变了结构(了解)String的不可变性面试题02、String的内存分配03、String的基本操作04、字符串拼接操作05、intern()的使用提前预知笔记对应视屏:118-课程笔记来源于宋红康老师的java虚拟机课程01、String的基本特性String:字符串,使用一对双引号引起来表示String s1 = “aismall” ; // 字面量的定义方式String s2 = new String(“aismall”);原创 2021-05-18 10:24:16 · 78 阅读 · 0 评论 -
12-JVM(上)-执行引擎
目录提前预知01、执行引擎概述执行引擎的工作流程02、java代码编译和执行过程为什么Java是半编译半解释型语言03、机器码,指令,汇编语言机器码指令汇编语言高级语言字节码04、解析器解释器分类现状05、JIT编译器Java代码的执行分类问题来了HotSpot JVM执行方式案例(了解)概念解释热点探测技术方法调用计数器热点衰减回边计数器HotSpotVM 可以设置程序执行方法HotSpotVM中 JIT 分类分层编译策略总结AOT编译器写到最后提前预知笔记对应视屏:110-课程笔记来源于宋红康老转载 2021-05-17 15:24:19 · 89 阅读 · 0 评论 -
11-JVM(上)-直接内存(Direct Memory)
目录提前预知01,概述02、非直接缓存区和缓存区03、存在的问题提前预知笔记对应视屏:107-109课程笔记来源于宋红康老师的java虚拟机课程01,概述不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域。直接内存是在Java堆外的、直接向系统申请的内存区间。来源于NIO,通过存在堆中的DirectByteBuffer操作Native内存通常,访问直接内存的速度会优于Java堆。即读写性能高。因此出于性能考虑,读写频繁的场合可能会考虑使用直接转载 2021-05-17 11:35:42 · 99 阅读 · 0 评论 -
10-JVM(上)-对象的实例化内存布局与访问定位
目录提前预知01,对象的实例化面试题对象创建方式创建对象的步骤判断对象对应的类是否加载、链接、初始化为对象分配内存处理并发问题设置对象的对象头执行init方法进行初始化02,对象的内存布局03,对象的访问定位提前预知笔记对应视屏:65-86课程笔记来源于宋红康老师的java虚拟机课程01,对象的实例化面试题美团:对象在JVM中是怎么存储的?对象头信息里面有哪些东西?蚂蚁金服:Java对象头有什么对象创建方式new:最常见的方式、单例类中调用getInstance的静态原创 2021-05-17 10:30:05 · 74 阅读 · 0 评论 -
09-JVM(上)-运行时数据区之方法区(Method Area)
目录提前预知01,栈,堆,方法区的交互关系02,方法区的理解HotSpot中方法区的演进03,设置方法区的大小与OOMjdk7及以前JDK8以后如何解决这些OOM04,方法区的内部结构类型信息域(Field)信息方法(Method)信息non-final的类变量(静态变量)全局常量运行时常量池和常量池常量池运行时常量池05,方法区使用举例06,方法区的演进细节07,方法区的垃圾回收08,总结提前预知笔记对应视屏:65-86课程笔记来源于宋红康老师的java虚拟机课程01,栈,堆,方法区的交互关系原创 2021-05-17 08:22:32 · 258 阅读 · 0 评论 -
08-JVM(上)-运行时数据区之堆(Heap)
目录提前预知01,堆的核心概述02,设置堆内存大小与OOM03,年轻代与老年代04,图解对象分配过程05,Minor GC,Major GC,Full Gc06,堆空间分代思想07,内存分配策略08,为对象分配内存:TLAB09,小结堆空间的参数设置10,堆是分配对象的唯一选择吗提前预知笔记对应视屏:64课程笔记来源于宋红康老师的java虚拟机课程01,堆的核心概述堆:对于一个JVM进程来说是堆唯一的,但是一个JVM进程可以包含多个线程,是所以这些线程共享同一个堆空间。下图中线程间共原创 2020-08-08 10:35:09 · 584 阅读 · 0 评论 -
07-JVM(上)-运行时数据区之本地方法栈(Native method Stack)
目录提前预知01,本地方法栈提前预知笔记对应视屏:64课程笔记来源于宋红康老师的java虚拟机课程01,本地方法栈Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法的调用。本地方法栈,也是线程私有的。允许被实现成固定或者是可动态扩展的内存大小。(在内存溢出方面是相同的)如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机将会抛出一个stackoverflowError 异常。如果本地方法栈可以动态扩展,并且在尝试扩展的时候无法申请到足原创 2020-08-08 10:33:59 · 125 阅读 · 0 评论 -
06-JVM(上)-本地方法接口(Native method interface)
目录提前预知01,什么是本地方法02,为什么使用Native Method?03,现状提前预知笔记对应视屏:63课程笔记来源于宋红康老师的java虚拟机课程01,什么是本地方法简单地讲,一个Native Method是一个Java调用非Java代码的接囗。一个Native Method是这样一个Java方法:该方法的实现由非Java语言实现,比如C。这个特征并非Java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern “c” 告知c++编译器去调用一个c的函数。原创 2020-08-07 09:19:56 · 155 阅读 · 0 评论 -
05-JVM(上)-运行时数据区之虚拟机栈(Stack)
目录提前预知01,虚拟机栈的概述虚拟机栈是什么?虚拟机栈的生命周期虚拟机栈的作用虚拟机栈的特点开发中遇到哪些异常?设置栈内存大小02,栈的存储单位栈中存储什么?03,局部变量表04,操作数栈05,代码追踪06,栈顶缓存技术07,动态链接08,方法的调用:解析与分派09,方法返回地址10,一些附加信息11,栈的相关面试题提前预知笔记对应视屏:41-43课程笔记来源于宋红康老师的java虚拟机课程课程内容共分为三个篇章:上篇: 内存与垃圾回收篇中篇:字节码与类的加载篇下篇:性能监控与调优篇目前原创 2020-08-07 09:17:54 · 277 阅读 · 0 评论 -
04-JVM(上)-运行时数据区之程序计数器(PC寄存器)
目录提前预知01,PC Register介绍02,举例说明03,两个常见问题提前预知笔记对应视屏:41-43课程笔记来源于宋红康老师的java虚拟机课程课程内容共分为三个篇章:上篇: 内存与垃圾回收篇中篇:字节码与类的加载篇下篇:性能监控与调优篇目前只有上篇的内容,中篇和下篇还未更新01,PC Register介绍JVM中的程序计数寄存器(Program Counter Register)中,Register的命名源于CPU的寄存器,寄存器存储指令相关的现场信息。CPU只有把数据原创 2020-08-07 09:15:23 · 144 阅读 · 0 评论 -
03-JVM(上)-运行时数据区概述及线程
目录提前预知01,运行时数据区概述前言02,线程提前预知笔记对应视屏:39-40课程笔记来源于宋红康老师的java虚拟机课程课程内容共分为三个篇章:上篇: 内存与垃圾回收篇中篇:字节码与类的加载篇下篇:性能监控与调优篇目前只有上篇的内容,中篇和下篇还未更新01,运行时数据区概述前言本节主要讲的是运行时数据区,也就是下图这部分,它是在类加载完成后的阶段当我们通过前面的:类的加载-> 验证 -> 准备 -> 解析 -> 初始化 这几个阶段完成后,就会用到执原创 2020-08-07 09:11:12 · 208 阅读 · 0 评论 -
02-JVM(上)-类加载子系统
目录提前预知01,内存结构概述02,类加载器与类加载的过程2.1,类加载器2.2.类加载的过程加载阶段链接阶段初始化阶段03,类加载器分类虚拟机自带的加载器启动类加载器(引导类加载器,Bootstrap ClassLoader)扩展类加载器(Extension ClassLoader)应用程序类加载器(系统类加载器,AppClassLoader)用户自定义类加载器04,ClassLoader的使用说明05,双亲委派机制工作原理双亲委派机制举例沙箱安全机制06,其他如何判断两个class对象是否相同类的主动使原创 2020-08-07 09:09:27 · 140 阅读 · 1 评论 -
01-JVM(上)-JVM与JAVA体系结构
目录提前预知1,为什么要学习JAVA虚拟机?2,多语言混合编程(了解)3,虚拟机与Java虚拟机对比4,JAVA虚拟机5,JVM的架构模型6,JVM生命周期7,JVM发展历程(了解)7.1,Sun Classic Vm7.2,Exact Vm7.3,HotSpot Vm(商用三大虚拟机之一)7.4,JRockit(商用三大虚拟机之一)7.5,IBM的J9(商用三大虚拟机之一)7.6,Azul VM7.7,Liquid VM7.8,Apache Marmony7.9,Micorsoft JVM7.10,Tao原创 2020-08-07 09:06:54 · 1150 阅读 · 0 评论