JVM
文章平均质量分 89
这个专栏会记录一下学习JVM的笔记
嘿,鱼骨头^O^
这个作者很懒,什么都没留下…
展开
-
垃圾回收器之 G1 垃圾回收器
4.4 G1定义:Garbage First2004论文发布2009 JDK 6u14 体验2012 JDK 7u4 官方支持2019 JDK9 默认 (废弃了之前的 CMS 垃圾回收器)G1取代了之前的CMS垃圾回收器适用场景同时注重吞吐量(Throughput)和低延迟(Low latency),默认的暂停目标是 200msG1(读作 Garbage One)它是同时会注重吞吐量和低延迟,它的内部也是基于这种并发的,它也是一种属于并发的垃圾回收器,跟我们之前提到的 CMS原创 2022-02-14 22:01:36 · 9621 阅读 · 6 评论 -
垃圾回收器之串行、吞吐量优先、响应时间优先的的垃圾回收器
4. 垃圾回收器本篇讲述了串行、吞吐量优先、响应时间优先的垃圾回收器,关于自从JDK9 开始默认的 G1 垃圾回收器会在下篇文章讲述。串行单线程堆内存较小,适合个人电脑吞吐量优先多线程堆内存较大,多核cpu让单位时间内,STW 的时间最短 0.2 0.2 = 0.4响应时间优先多线程堆内存较大,多核cpu尽可能让单次 STW 的时间最短 0.1 0.1 0.1 0.1 0.1 = 0.5接下来我们来学习垃圾回收器,垃圾回收器我们可以把它分为这三类,第一类叫原创 2022-02-13 20:33:31 · 12582 阅读 · 8 评论 -
垃圾回收之垃圾回收算法(标记清除、标记整理、复制)、分代垃圾回收
2. 垃圾回收算法之前我们学习了如何判断一个对象是不是可以作为垃圾被回收,但是具体回收还需要依赖一些回收方面的算法,常见的有三种:分别是标记清除、标记整理、和复制这三种算法,下面先从第一种标记清除算法来学习。2.1 标记清除定义:Mark Sweep速度快会造成内存碎片分为两个阶段:标记+清除怎么判断一个对象是否是垃圾呢,就是沿着GC Root对象的引用链去找,扫描整个堆对象的过程中,如果发现对象确实被引用了,那么它需要保留,如果没有GC Root直接或间接地引用它,那么它就可以当成原创 2022-02-11 22:12:31 · 7123 阅读 · 13 评论 -
垃圾回收之如何判断对象可以回收、四种引用以及实际案例操作
垃圾回收JVM内存结构中的堆存在垃圾回收机制,我们接下来就来详细地学习一下垃圾回收的相关知识。1. 如何判断对象可以回收1.1 引用计数法只要一个对象被其他变量所引用,那就让这个对象的计数+1,如果它被引用了两次,那就让它的计数变成2,如果某一个变量不再引用它了,那让它的计数-1,当这个对象它的引用计数变为0的时候,意味着没有人再引用它了,那么它就可以作为一个垃圾进行一个回收。但是引用计数法听起来很好,但是它存在一个重要的弊端,一种叫循环引用的问题,如下图A对象引用了B对象,B对象的引用计原创 2022-02-10 22:06:31 · 2176 阅读 · 0 评论 -
JVM内存结构之本地方法栈、堆
3. 本地方法栈本地方法栈是java虚拟机在调用一些本地方法时需要给这些本地方法提供的内存空间,本地方法是指那些不是由java代码编写的方法,因为我们的java代码是有一定的限制的,它有的时候不能直接跟我们的操作系统底层打交道,所以就需要一些用c或c++编写的本地方法来与操作系统更底层的api来打交道,java代码可以间接地通过本地方法来调用到底层的一些功能,那这些本地方法运行的时候使用的内存就叫做本地方法栈,那这样的本地方法多不多呢?答案是非常的多,不管是一些java的基础类库里还是在执行引擎里原创 2022-02-04 23:42:11 · 1590 阅读 · 0 评论 -
垃圾回收调优
5. 垃圾回收调优预备知识掌握 GC 相关的 VM 参数,会基本的空间调整掌握相关工具明白一点:调优跟应用、环境有关,没有放之四海而皆准的法则调优是一项比较高级的技能,也不是所有的初学者一下子就能掌握,这里建议大家如果希望将来走上调优的道路的话,首先需要掌握与 GC 相关的 JVM 参数,然后会一些基本的空间调整,参数可以到Oracle 官网去找。有的时候不知道自己用的是哪个垃圾回收器,设置的堆大小、新生代的大小,不知道,就可以通过“C:\Program Files\Java\jdk1.原创 2022-02-17 11:10:50 · 558 阅读 · 0 评论 -
JVM内存结构之方法区、直接内存
5. 方法区5.1 定义是所有java虚拟机线程共享的区域,这个和我们的堆有点类似,它和堆都是线程共享的区域。那么这块区域它里面存储了什么信息呢?它存储了跟类的结构相关的一些信息,都有哪些呢,有类的成员变量、方法数据、成员方法以及构造方法它们的代码部分,包括一些特殊方法(这里的特殊方法指的是类的构造器)。从这我们大概看出来了,哦,方法区里存的就是跟类相关的一些信息,就包括它的方法呀、构造器呀成员方法呀等等,这些信息都是在方法区里存储的,另外,运行时常量池也是存储在方法区的。方法区在虚拟机启原创 2022-02-09 14:14:19 · 770 阅读 · 0 评论 -
JVM内存结构之程序计数器、虚拟机栈
内存结构程序计数器虚拟机栈本地方法栈堆方法区1. 程序计数器从上面这张图可以看出程序计数器在JVM里的位置,可以看到它属于JVM内存结构的组成部分。1.1 定义Program Counter Register 程序计数器(寄存器)其中Program是程序的意思,Counter是计数器,最后Register没有直接翻译,它的含义是寄存器的意思,稍后我们会提到它。作用:记住下一条jvm指令的执行地址特点:是线程私有的java程序是支持多线程一起运行的,多个线程一起原创 2022-02-03 23:03:04 · 2213 阅读 · 0 评论 -
JVM的定义以及JVM的学习路线
1. 什么是JVM定义:Java Virtual Machine - java程序的运行环境(java二进制字节码的运行环境)。好处:JVM是java程序一次编写,到处运行的基石。JVM屏蔽了java字节码与底层操作系统的差异,对外提供了一个一致的运行环境,JVM用解释的方法来执行二进制字节码,来达到代码的平台无关性。自动内存管理,垃圾回收功能。java语言它的出现时期比较早,这个优点是相较于C、C++来说的,C、C++程序在编写的时候程序员要手动释放内存,如果操作不当很容易会造成内存泄漏原创 2022-02-01 22:08:12 · 1227 阅读 · 0 评论