【JAVA虚拟机(JVM)】
记录自己学习JVM的笔记
洞鉴
一起洞鉴,一起透彻了解
展开
-
四、类加载机制、类加载过程、类加载器、双亲委派模型
类加载机制 类从被加载到虚拟机内存中开始,到卸载出内存为止,整个生命周期如下: 加载、验证、准备、初始化和卸载这五个阶段的顺序是确定的,必须按这种顺序来开始(并非执行,因为这些阶段通常是交叉混合进行的)。但解析阶段不一样,有时可以在初始化之后再开始【Java的动态绑定】 类加载过程:5步 加载:加载需要完成如下三件事,完成后,虚拟机外部的二进制字节流就存入方法区中了,内存中也会实例化一个java.lang.Class对象,将作为程序访问方法区的外部入口。 通过一个类的全限定名来获取定义此类的二进制字节原创 2020-07-22 16:59:31 · 234 阅读 · 0 评论 -
三、内存分配与回收策略
此笔记出自《深入理解java虚拟机 第二版》,仅做摘要整理,详细了解可购买相关书籍。 Java中的自动内存管理归根结底是为了自动化解决两个问题: 1、给对象分配内存 2、回收分配给对象的内存 回收分配给对象的内存是上面说到的,接下来说说第一个问题:给对象分配内存 对象的内存分配,宏观来说就是在队上分配,因为堆是存放对象实例的内存区域。(也有可能经过JIT编译后拆散为标量间接的分配到栈上)对象主要分配在新生代的Eden区上,少数情况下可能直接分配到老年代上。接下来讲讲规矩 对象优先分配在Eden区上 大原创 2020-07-22 14:42:18 · 220 阅读 · 0 评论 -
二、对象判活算法、垃圾收集(GC)算法、垃圾收集器
此笔记出自《深入理解java虚拟机 第二版》,仅做摘要整理,详细了解可购买相关书籍。 图片扎堆,一是为了让文字更加紧凑,二是为了学习完文字知识后能单纯看图回顾,及时复习,三是增加不同类型之间对比。 三连问:哪些内存需要回收?什么时候回收?如何回收? 对象存活判定算法:2种 引用计数算法:给对象添加应该引用计数器,引用到则+1,引用失效则-1,任何时刻计数器为0的对象就不可能再被使用。 实现简单,效率高,但很难解决对象之间相互循环使用的例子。原创 2020-07-22 14:04:14 · 319 阅读 · 0 评论 -
一、内存区域、对象创建步骤、对象内存布局、对象访问定位
此笔记出自《深入理解java虚拟机 第二版》,仅做摘要整理,详细了解可购买相关书籍。 内存区域 程序计数器:线程私有;当前线程所指向的字节码的行号指示器;是唯一一个没有规定OOM(OutOfMemoryError)情况的区域;【PS:如果线程当前执行的是一个Java方法,则记录的是正在执行的虚拟机字节码指令地址,如果是native方法,则为空;】 虚拟机栈:线程私有;描述Java方法执行,方法执行时会创建栈帧—用于存储局部变量表、操作数栈、动态链接、方法出口等信息;会抛出OOM和StackOver原创 2020-07-22 11:01:00 · 182 阅读 · 0 评论