JVM学习
利用实习期空闲时间较多,本着不虚度光阴的精神,学习JVM
向着百万年薪努力的小赵
当注意力专注于一件事上,岁月就会显得十分轻浮,快的有些过于浪荡——远近书疏,莫不手答,笔翰如流,未尝壅滞
展开
-
JVM调优命令大全及常用命令工具和实战步骤
直接内存是在java堆外的、直接向系统申请的内存空间。通常访问直接内存的速度会优于Java堆。因此出于性能的考虑,读写频繁的场合可能会考虑使用直接内存。原创 2022-07-15 16:27:26 · 52677 阅读 · 4 评论 -
JVM垃圾收集—垃圾收集器及常见组合参数
链接: JVM垃圾收集—垃圾收集算法上一篇介绍了垃圾收集算法及分区,这篇我们来学习垃圾收集器首先我们要知道垃圾收集器有三种类型:串行收集器 Serial 和 Serial Old只能有一个垃圾回收线程执行,用户线程暂停。(适用于内存较小的嵌入式设备)并行收集器[吞吐量优先] Paraller Scanvenge、Parallel Old多条垃圾收集线程并行工作,但此时用户线程仍然处于等待阶段。(适用于科学计算、后台处理等若干交互场景)并发收集器[停顿时间优先] CMS、G1用户线程和垃圾收集线程同原创 2022-07-14 18:19:01 · 51256 阅读 · 105 评论 -
JVM垃圾收集之——垃圾收集算法
链接: JVM垃圾收集之——怎样判定一个对象是不是垃圾接上篇,介绍完怎样判定一个对象是不是垃圾之后,就该瞅一瞅垃圾是怎样回收的了首先我们要知晓,垃圾收集是建立在两个分代假说之上的:收集器应该将Java堆划分出不同的区域,然后将回收对象依据其年龄分配到不同的区域中存活。给出收集的几个名词,以便于大家看文章:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象,也可以反过来标记存活的对象,然后回收违背标记的对象。第一步、找到内存中需要被回收的对象,并且把它们标记出来。第二步、清除掉被标记需要原创 2022-07-14 17:47:51 · 50311 阅读 · 0 评论 -
JVM垃圾收集之——怎样判定一个对象是不是垃圾
现在,让我们来学习一下JVM中的重头戏,垃圾收集想要把一个对象当成垃圾回收掉,我们需要知道,不被需要和使用的对象才是垃圾,关键是怎么找到这些不被需要和使用的对象。这里我们有两个方法可以去判定一个对象是不是垃圾:一个对象呢我给它做一个引用计数,假如一个对象目前有三个引用指向,那么给他记录一个引用数为3。接下来如果有一个引用消失了,变成二,再有一个引用消失变成一,最后当引用全部消失这个数变成零,当它变成零的时候,这对象成为了垃圾(Python 就是使用这样的方式)。总结:如果一个对象没有引用指向它的时候,或原创 2022-07-14 16:33:35 · 22543 阅读 · 0 评论 -
JVM内存模型——运行时数据区的特点和作用
java之所以发展到如今这个规模与生态呢很大程度上源于它的虚拟机,而内存管理又是虚拟机中的一个重要命题。可以说当JVM接手了内存管理的事宜之后呢,相对于C++手动控制管理内存,Java降低了开发者的门槛,也提高了程序的可维护性。那么JVM究竟是如何对内存进行管理的?特点:1.线程独有的,2.是JVM中唯一没有OOM的内存区域程序用来存储字节码指令地址的,由执行引擎读取下一条指令进行执行。这时候我们来看一下字节码文件,可以看到第一列的数字代表了字节码指令之间的偏移量,叫做bytecode index。这其实呢原创 2022-07-13 23:16:07 · 20645 阅读 · 5 评论 -
从源码探究双亲委派机制
首先我们要知道双亲委派机制是为了解决什么问题?有关类加载器,可以参考我的这篇博客: 所谓的双亲委派,就是先让父亲加载器试图加载该Class,只有在父亲加载器无法加载该类时才尝试从自己的类路径中加载该类。 通俗的讲,就是某个特定的类加载器在接到加载类的请求时,首先将加载任务委托给父亲加载器,依次递归,如果父亲加载器可以完成类加载任务,就成功返回; 只有父亲加载器无法完成此加载任务时,才自己去加载。我们通过这张图来理解一下:在被动的情况下,当一个类加载器收到加载请求,他不会首先自己去加载,而是传递原创 2022-07-13 22:40:38 · 25994 阅读 · 1 评论 -
Class的生命周期
我们编写的Java代码是如何运行在我们的操作系统之上呢?java 文件通过javac编译成class文件,这种代码我们称之为字节码(中间码), 由JVM去加载字节码这个过程。官方说法:(这部分不需要去记,简单看看,千万别记)像编译器就交给专业的人去做,大部分普通程序能够接触到的是JVM加载字节码这个过程。官方把这个过程成为类加载。在进入Class File Loading之前,我们明确一下类加载流程的目的:就是把javac 编译过的class字节码文件,通过加载,生成某种形式的class数据结构进入内存,原创 2022-07-13 10:56:53 · 670 阅读 · 4 评论 -
Java文件是怎么编译成Class文件的
其实就是我们前端的编译过程,是通过javac(编译器)把java文件变成.class字节码文件。如上图所示,这里给出一个javac 源码中的 JavaCompiler.java按照上图,逐步分析读取源代码,一个字节一个字节读取出来,找到这些词法中的语句比如:访问修饰符、类和类名、条件语句、循环结构、基础的语法等等。结论:是将源代码的字符流转变为标记(Token)集合的过程,单个字符是程序编写时的最小元素,但标记才是编译时的最小元素。关键字、变量名、字面量、运算符都可以作为标记,如下代码:这句代码中就原创 2022-07-13 10:34:24 · 10009 阅读 · 0 评论 -
什么是Java虚拟机以及JDK,JRE,JVM的区别和联系
不要背,简单看看理解完事了The Java Virtual Machine (JVM) is an abstract computing machine. The JVM is a program that looks like a machine to the programs written to execute in it. This way, Java programs are written to the same set of interfaces and libraries. Each JVM原创 2022-07-13 10:00:07 · 980 阅读 · 0 评论 -
JVM学习笔记-对象的访问定位——(纸质笔记)
原创 2021-06-22 10:11:04 · 118 阅读 · 0 评论 -
JVM学习笔记-虚拟机类加载机制——(纸质笔记)
原创 2021-05-07 16:49:14 · 188 阅读 · 0 评论 -
JVM学习笔记-Class类文件结构-属性表集合——(纸质笔记)
原创 2021-05-07 16:47:02 · 158 阅读 · 0 评论 -
JVM学习笔记-Class类文件结构-字段表,方法表集合——(纸质笔记)
原创 2021-04-20 17:32:09 · 180 阅读 · 0 评论 -
JVM学习笔记-Class类文件结构-访问标志,类索引,父类索引,接口索引集合——(纸质笔记)
原创 2021-04-20 17:29:58 · 165 阅读 · 0 评论 -
JVM学习笔记-Class类文件结构-魔数,版本号,常量池——(纸质笔记)
原创 2021-04-20 17:26:24 · 180 阅读 · 0 评论 -
JVM学习笔记-Class类文件结构——(纸质笔记)
原创 2021-04-20 17:17:05 · 193 阅读 · 0 评论 -
JVM学习笔记-垃圾收集算法——(纸质笔记)
原创 2021-04-20 17:14:27 · 160 阅读 · 0 评论 -
JVM学习笔记-对象的复活及Finalize()方法——(纸质笔记)
原创 2021-04-15 17:42:22 · 150 阅读 · 0 评论 -
JVM学习笔记-判断对象是否存活——(纸质笔记)
原创 2021-04-15 17:40:59 · 122 阅读 · 0 评论 -
JVM学习笔记-OOM异常——(纸质笔记)
原创 2021-04-15 17:38:28 · 111 阅读 · 0 评论 -
JVM学习笔记-虚拟机对象的创建及内存布局——(纸质笔记)
原创 2021-04-13 20:28:22 · 144 阅读 · 0 评论 -
JVM学习笔记-JAVA虚拟机内存模型——(纸质笔记)
原创 2021-04-13 20:26:11 · 202 阅读 · 0 评论