![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JVM
文章平均质量分 74
馒头太帅了
这个作者很懒,什么都没留下…
展开
-
JVM学习---垃圾收集算法
JVM学习—垃圾收集算法1. 分代收集理论思想也很简单,就是根据对象的生命周期将内存划分成不同的区域,然后进行分区管理,使用不同的垃圾回收器。当前商业虚拟机的垃圾收集器, 大多数都遵循了分代收集(Generational Collection)的理论进 行设计, 分代收集名为理论, 实质是一套符合大多数程序运行实际情况的经验法则, 它建立在两个分代假说之上:弱分代假说(Weak Generational Hypothesis): 绝大多数对象都是朝生夕灭的。强分代假说(Strong Gener原创 2021-07-13 22:46:23 · 146 阅读 · 0 评论 -
JVM学习---垃圾回收机制
JVM学习—垃圾回收机制概述1. 垃圾回收的概述说起垃圾收集(Garbage Collection, 下文简称GC) , 有不少人把这项技术当作Java语言的伴生产物。 事实上,垃圾收集的历史远远比Java久远, 在1960年诞生于麻省理工学院的Lisp是第一门开始使 用内存动态分配和垃圾收集技术的语言。垃圾收集需要完成的三件事情:哪些内存需要回收?什么时候回收?如何回收?...原创 2021-07-13 21:04:38 · 123 阅读 · 1 评论 -
JVM学习笔记---什么是自定义类加载的流程
JVM学习笔记—什么是自定义类加载的流程1. 为什么要自定义类加载器隔离加载类模块隔离,把类加载到不同的应用选中。比如tomcat这类web应用服务器,内部自定义了好几中类加载器,用于隔离web应用服务器上的不同应用程序。修改类加载方式除了Bootstrap加载器外,其他的加载并非一定要引入。根据实际情况在某个时间点按需进行动态加载。扩展加载源比如还可以从数据库、网络、或其他终端上加载防止源码泄漏java代码容易被编译和篡改,可以进行编译加密,类加载需要自定义还原加密原创 2021-07-12 17:27:03 · 119 阅读 · 0 评论 -
JVM学习笔记---什么是双亲委派模型
JVM学习笔记—什么是双亲委派模型原创 2021-07-12 17:08:40 · 255 阅读 · 0 评论 -
JVM学习笔记---JVM运行时内存之常量池
JVM学习笔记—JVM运行时内存之常量池1. 常量池vs运行时常量池字节码文件中,内部包含了常量池方法区中,内部包含了运行时常量池常量池:存放编译期间生成的各种字面量与符号引用运行时常量池:常量池表在运行时的表现形式编译后的字节码文件中包含了类型信息、域信息、方法信息等。通过ClassLoader将字节码文件的常量池中的信息加载到内存中,存储在了方法区的运行时常量池中。理解为字节码中的常量池Constant pool只是文件信息,它想要执行就必须加载到内存中。而Java程序是靠JVM,更具体原创 2021-07-12 01:38:03 · 305 阅读 · 1 评论 -
JVM学习笔记---JVM运行时内存之方法区
JVM学习笔记—JVM运行时内存之方法区1. 方法区简介方法区(Method Area) 与Java堆一样, 是各个线程共享的内存区域, 它用于存储已被虚拟机加载 的类型信息、常量、 静态变量、 即时编译器编译后的代码缓存等数据。元空间、永久代是方法区具体的落地实现。方法区看作是一块独立于Java堆的内存空间,它主要是用来存储所加载的类信息的2. 方法区特点方法区与堆一样是各个线程共享的内存区域方法区在JVM启动的时候就会被创建并且它实例的物理内存空间和Java堆一样都可以不连续方法区原创 2021-07-12 01:25:42 · 207 阅读 · 1 评论 -
JVM学习笔记---JVM运行时内存之元空间
JVM学习笔记—JVM运行时内存之元空间1. 元空间简介在JDK1.7之前,HotSpot 虚拟机把方法区当成永久代来进行垃圾回收。而从 JDK 1.8 开始,移除永久代,并把方法区移至元空间,它位于本地内存中,而不是虚拟机内存中。HotSpots取消了永久代,那么是不是也就没有方法区了呢?当然不是,方法区是一个规范,规范没变,它就一直在,只不过取代永久代的是元空间(Metaspace)而已。它和永久代有什么不同的?2. 永久代和元空间的区别存储位置不同:永久代在物理上是堆的一部分,和新生原创 2021-07-11 21:45:17 · 1493 阅读 · 3 评论 -
JVM学习笔记---JVM运行时内存之堆空间
JVM学习笔记—JVM运行时内存之堆空间1. Java 堆简介对于Java应用程序来说, Java堆(Java Heap) 是虚拟机所管理的内存中最大的一块。Java堆是被所有线程共享的一块内存区域, 在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例, Java 世界里“几乎”所有的对象实例都在这里分配内存。“几乎”是指从实现角度来看, 随着Java语 言的发展, 现在已经能看到些许迹象表明日后可能出现值类型的支持, 即使只考虑现在, 由于即时编译技术的进步, 尤其是逃逸分析技术的日渐强原创 2021-07-11 20:38:01 · 165 阅读 · 1 评论 -
JVM学习笔记---JVM运行时内存之本地方法栈
JVM学习笔记—JVM运行时内存之本地方法栈1. 本地方法栈简介本地方法栈(Native Method Stacks) 与虚拟机栈所发挥的作用是非常相似的,区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码) 服务, 而本地方法栈则是为虚拟机使用到的本地(Native) 方法服务。本地方法并不在虚拟机当中2.本地方法栈的特点本地方法栈加载native的但是方法, native类方法存在的意义当然是填补java代码不方便实现的缺陷而提出的。虚拟机栈为虚拟机执行Java方法服务,而本地原创 2021-07-11 14:20:20 · 139 阅读 · 0 评论 -
JVM学习笔记---JVM运行时内存之虚拟机栈
JVM学习笔记—JVM运行时内存之虚拟机栈1.虚拟机栈Java虚拟机栈(Java Virtual Machine Stacks)也是线程私有的,即生命周期和线程相同。Java虚拟机栈和线程同时创建,用于存储栈帧。每个方法在执行时都会创建一个栈帧(Stack Frame),用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直到执行完成的过程就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。2. 虚拟机栈—栈帧栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方原创 2021-07-11 12:23:41 · 135 阅读 · 1 评论 -
JVM学习笔记---JVM运行时内存之程序计数器
JVM学习笔记—JVM运行时内存1.什么是程序计数器程序计数器(Program Counter Register):也叫PC寄存器,是一块较小的内存空间,它可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令、分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。下面是一段程序对应的二进制字节码文件,但是这段二进制字节码文件跟程序计数器有什么关系呢首先要注意的是二进制字节码文件不会被C原创 2021-07-11 12:23:24 · 124 阅读 · 1 评论 -
JVM学习笔记---JVM整体架构
JVM学习笔记—JVM整体架构1.JVM整体架构根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。架构简介线程计数器(PC计数器):占用内存小,线程私有(线程隔离),生命周期与线程相同大致为字节码行号指示器虚拟机栈:线程私有,生命周期与线程相同,使用连续的内存空间Java 方法执行的内存模型,存储局部变量表、操作栈、动态链接、方法出口等信息内存空间堆:属于内存中比较大的一块专区线程共享,生命周期与虚拟机相同,可以不使用连原创 2021-07-10 15:32:42 · 186 阅读 · 0 评论