![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 88
友人C菌
这个作者很懒,什么都没留下…
展开
-
JVM进阶系列(四)
JVM进阶系列(四) 1、引言 或许编程不一定会找到工资,但是总比无事闲聊打游戏好。 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经理加载、验证、准备、解析、初始化、使用、卸载这几个阶段。 2、加载 主要完成以下三个步骤: 通过一个类的全限定名来获取定义此类的二进制字节流 将这个字节流代表的静态存储结构转化为方法区的运行时数据结构 在Java堆中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口。 针对第一个步骤可以从以下几个方原创 2022-03-30 09:35:37 · 69 阅读 · 0 评论 -
JVM进阶系列(三)
JVM进阶系列(三) 1、引言 在前面的进阶系列(二)中已经说明垃圾回收主要是针对Java堆的回收,方法区的回收虽然也可以做到,但是实现条件比较苛刻。在Java堆的回收,讨论了如何判断对象以死,采用两种算法,分别是引用计数算法和可达性分析算法。然后又对引用进行了分类。垃圾回收算法基于重要的分代理论,新生代和老年代。拓展了永久代是方法区的思绪。垃圾回收算法主要分为三类分别是标记-清除算法、标记-复制算法、标记-整理算法。 这次主要是针对HotSpot算法的实现细节和各种垃圾收集器进行介绍。 2、根原创 2022-03-30 09:34:12 · 62 阅读 · 0 评论 -
JVM进阶系列(二)
JVM进阶系列(二) 1、引言 垃圾收集(GC),解决的主要事情:1、哪些内存需要回收 2、什么时候回收 3、如何回收。对于Java语言,Java内存运行时区域的各个部分,程序计数器、虚拟机栈、本地方法栈这三个区域随着线程而生,随线程而灭。这三个区域的内存分配和回收都具备确定性。当方法结束或者线程结束的时候,内存自然就跟着回收。 2、Java堆 Java堆存放的都是类的实例(对象),方法在运行时会创建多个对象。这里的内存分配是动态的。 问题1:如何判断对象是否已死 使用计数算法和可达性分原创 2022-03-24 09:08:20 · 99 阅读 · 0 评论 -
JVM进阶系列(一)
JVM进阶系列(一) 1、引言 Java语言具有一次编写、到处运行的特性。主要原因就是JVM,JVM严格来说就是一种虚拟机的规范。Java是一种解释和编译都存在的语言,它一开始是由javac命令将.java的源文件编译成.class文件(字节码文件),之后在由JVM虚拟机解释运行在系统上。这就是为什么Java语言能够一次编写、到处运行。 2、内部结构 程序计数器:这部分是一块较小的内存空间,被看做为当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变这个计数器的值选取下一条需要执行的字节原创 2022-03-21 09:30:24 · 1314 阅读 · 0 评论