
JVM
JVM学习知识点记录
猫不爱学习
励志成为一个优秀的coder的小白,
展开
-
垃圾收集器
目录垃圾收集器1、Serial收集器(新生代收集器,串行GC)2、ParNew收集器(新生代收集器,并行GC)3、Parallel Scavenge收集器(新生代收集器,并行GC)4、Serial Old收集器(老年代收集器,串行GC)5、Parallel Old收集器(老年代收集器,并行GC)6、CMS收集器(老年代收集器,并发GC)7、G1收集器(全区域的垃圾回收器) 垃圾收集器 连线表示可以搭配使用(JDK7/8后,HotSpot虚拟机所有收集器) 1、Serial收集器(新生代收集器,串行GC) 特原创 2020-06-19 11:45:26 · 137 阅读 · 0 评论 -
深入理解Java虚拟机(四)之垃圾回收相关概念
目录System.gc()的理解用户线程的暂停:Stop-The-World(STW)安全点与安全区域安全点:安全区域引用强引用软引用(内存不足即回收)弱引用(发现即回收)虚引用Java的语言类型 System.gc()的理解 在默认情况下,通过System. gc()或者Runtime . getRuntime () .gc()的调用,会显式触发FullGC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。 然而System. gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。 JV原创 2020-06-09 22:57:57 · 192 阅读 · 0 评论 -
深入理解Java虚拟机(四)之垃圾回收算法
目录垃圾回收概述什么是垃圾?为什么需要GC?垃圾回收相关算法垃圾标记阶段,对象存活判断引用计数算法可达性分析(或根搜索算法、追踪性垃圾收集)GC Roots对象的finalization机制标记清除算法复制算法标记-压缩(整理)算法对比三种算法增量收集算法分代收集算法 垃圾回收概述 什么是垃圾? ➢垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。 ● 如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序结束,被保留的空间无法被其他对象使用。甚至原创 2020-06-09 19:08:16 · 553 阅读 · 0 评论 -
内存溢出和内存泄露
目录何谓内存溢出何谓内存泄露两者的区别和联系 何谓内存溢出 何谓内存泄露 两者的区别和联系原创 2020-06-08 12:14:54 · 177 阅读 · 0 评论 -
深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----程序计数器
目录 程序计数器转载!转载 2020-06-08 11:10:55 · 130 阅读 · 0 评论 -
对象的实例化和内存布局及访问定位
目录对象实例化内存布局访问定位 对象实例化 内存布局 访问定位原创 2020-06-05 20:17:24 · 170 阅读 · 0 评论 -
深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----方法区(元空间)
目录栈、堆、方法区的交互关系方法区的理解设置方法区的大小和OOM方法区的内部结构方法区使用举例方法区的演进细节方法区的垃圾回收 栈、堆、方法区的交互关系 方法区的理解 方法区是独立于堆的内存空间 方法区(Method Area)与Java堆- -样,是各个线程共享的内存区域。 方法区在JVM启动的时候被创建,并且它的实际的物理内存空间中和Java堆区一样都可以是不连续的。 方法区的大小,跟堆空间一样,可以选择固定大小或者可扩展。 方法区的大小决定了系统可以保存多少个类,如果系统定义了太多的类,导致方法原创 2020-06-05 19:05:03 · 559 阅读 · 0 评论 -
深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----堆
目录堆的核心概述堆的内存细分堆的大小设置年轻代和老年代对象分配过程浅谈Minor GC/Young GC、Major GC、Full GC堆空间分代思想内存分配策略 堆的核心概述 一个JVM实例只存在一个堆内存, 堆也是Java内存 管理的核心区域。 Java堆区在JVM启动的时候即被创建,其空间大小也就确定了。是JVM管理的最大一块内存空间。 ➢堆内存的大小是可以调节的。 《Java虚拟机规范》规定,堆可以处于物理上不连续的内存空间中,但在逻辑上它应该被视为连续的。 所有的线程共享Java堆,在这里还可原创 2020-06-03 10:03:15 · 366 阅读 · 2 评论 -
深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----Java虚拟机栈
目录Java虚拟机栈虚拟机栈的背景Java虚拟机栈的特点栈帧栈帧的内部结构栈中可能出现的异常设置栈的内存大小java虚拟机栈的存储结构和运行原理虚拟机栈的相关面试题 Java虚拟机栈 虚拟机栈的背景 我们知道Java时跨平台的语言,所以基于此Java的指令都是根据栈来设计的,因为不同平台CPU架构不同,所以不能设计为基于寄存器。 基于栈设计的优点:跨平台,指令小,编译容易实现, 缺点:性能下降 Java虚拟机栈的特点 1、Java虚拟机栈,也叫栈,每个线程在创建时都会创建一个虚拟机栈,其内部保存了一个原创 2020-06-02 20:23:27 · 192 阅读 · 0 评论 -
深入理解Java虚拟机(三)之详拆运行时数据区的各个结构----本地方法栈
本地方法栈本地方法栈的特点为什么要使用本地方法? 本地方法栈的特点 我们观察JVM运行时数据域发现java有两个栈,一个本地丰富栈,一个Java虚拟机栈。Java虚拟机栈用于管理Java方法的调用,本地方法栈用于管理本地方法(底层用c/c++等非Java语言写的) 线程私有 允许被实现成固定大小或者可动态扩展内存 如果线程请求分配的栈容量超过本地方法栈允许的最大容量,Java虚拟机就会抛出StackOverFlowError异常。 如果可以动态扩展,并且在扩展时无法申请足够的内存,或者在创建线程原创 2020-06-01 09:37:07 · 170 阅读 · 0 评论 -
深入理解java虚拟机(二)之细品类的加载过程
类加载子系统JVM详细架构图类加载子系统作用类的加载过程图示:细节加载:链接初始化:类加载器分类为什么要使用用户自定义类加载器双亲委派机制原理双亲委派机制的优势JVM中表示两个class对象是否为同一个类类的主动使用和被动使用 JVM详细架构图 类加载子系统作用 ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine(执行引擎)决定 1、类加载子系统负责从文件系统或者网络中加载class文件,class文件在开头有特定的文件标识(即16进制CA TE原创 2020-05-30 04:02:36 · 201 阅读 · 0 评论 -
深入理解java虚拟机(一)之JVM概述
JVM(一)JVM概述计算机系统中JVM所处的位置什么是java虚拟机(JVM)?JVM体系结构概览JVM生命周期1.启动2.执行3.退出各种JVM JVM概述 计算机系统中JVM所处的位置 JVM是运行在操作系统之上的,并没有和硬件有直接的交互 什么是java虚拟机(JVM)? java虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机有自己完善的硬体架构,如处理器、堆栈、寄存器等,还具有相应的指令系统 Java虚拟机屏蔽了与具体操作系统平台相关的信息,原创 2020-05-30 02:20:46 · 417 阅读 · 0 评论