![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jvm
文章平均质量分 93
Danny_idea
热爱技术,热爱生活,一步一个脚印。
更多宝贵知识记录可以关注个人公众号:Idea的技术分享
展开
-
JVM系列 -- G1与低延迟垃圾收集器
在上一篇文章中我在文中花了较多的部分介绍CMS垃圾收集器,这款收集器的主要特点就是“并发收集+低停顿”。随着JDK7版本的出现,Hotspot JDK研发团队开始渐渐将重心移向到Grarbage First(G1)收集器中,起初设计的目标是希望能够将其替换掉CMS垃圾收集器。垃圾收集器接口的统一收拢JDK在开发的过程中也是有经过很多次代码优化的,在open jdk的这份文章记录中就有提及过关于垃圾收集器的接口统一设计思路:链接地址:https://openjdk.java.net/jeps/3.原创 2021-03-27 17:25:07 · 648 阅读 · 0 评论 -
JVM系列 -- 深入剖析垃圾收集器
前边的一篇文章中我们讲解了Hotspot中垃圾收集的常用算法,标记删除,标记复制,标记整理这三种主要的管理思路。如果说算法只是一种理论模型,那么垃圾收集器就是这种理论模型的实践产物了。本文主要讨论的垃圾收集器是基于JDK1.8版本的Hotspot虚拟机下的实践。在Hotspot虚拟机中,其实出现了很多具有代表性特色的垃圾收集器产品。在实际工作中,通常会在系统中针对不同的年龄代使用不同的垃圾收集器组合搭配,因此对它们有一个系统的认识愈加重要。并行垃圾收集和并发垃圾收集的区别并行垃圾收集首先解释一下什原创 2021-02-07 23:12:04 · 289 阅读 · 0 评论 -
JVM系列--内存回收
在前边的文章中我们介绍了Java的虚拟机是如何进行内存管理的,以及一个对象的内存分配过程。今天这篇文章将会介绍下关于jvm里面的垃圾回收过程相关细节点。如何判断一个对象是否存活简单来讲,判断一个对象是否存活的算法主要有以下两类:引用计数算法根可达算法引用计数算法根据一个引用计数器来计算对象被引用的次数,如果引用加一,则计数器+1,反之计数器-1。这个算法虽然实现思路比较简单,但是默认的jvm并不使用这种算法,因为无法解决相互引用的问题。根可达算法通过一系列名为“GC Roots”的原创 2021-02-05 17:08:38 · 640 阅读 · 0 评论 -
JVM系列--对象内存分配技术分析
上一篇文章中我们有说到过关于tlab技术相关的内容点,这期我们就来深入一起了解关于对象内存分配背后的技术原理。什么是TLAB在上一篇文章中我们有提及到对象在JVM中的内存管理,大部分情况下对象的分布都是存储在Java堆中存储的,但是如果从JVM设计的角度来思考,直接分配在一个处于高度竞争环境下的公共内存区域是否合理呢?如下方代码所示:public class AllocObj { public User alloc(int id, String name) { User原创 2021-02-05 16:58:59 · 214 阅读 · 0 评论 -
JVM系列--虚拟机的内存管理
Java语言和其他语言在内存管理的区别对比其他语言,例如C语言,在内存管理方面,Java要做得更加“智能”一些。主要是因为Java语言提供了相关的虚拟机进行内存管理。通常在C语言里面,创建一个对象之后需要手动进行对象内存的delete,free处理。例如这段代码:#include <iostream>using namespace std;int main() { cout << "free begin " << endl; void* p原创 2021-02-05 16:34:42 · 205 阅读 · 0 评论 -
JVM系列--Hotspot虚拟机的内存布局
关于java内存区域部分的堆,栈,方法区三个部分而言,我总结了一下大概为一下这张图。 以下是我第一次初学堆,栈,方法区的一些心得,如有不足,希望各位大佬们指点一下 栈(Stack):1.为什么栈要用来存储基本变量信息和对象引用java虚拟机的基本架构就是采用栈来进行设计的。当一个程序需要运行的时候,由于要预先内存空间和运行的生命周期,所以需要进行指针的变动,来进行内存大小的分配。是...原创 2018-07-20 18:57:22 · 13340 阅读 · 8 评论 -
JVM系列--趣谈Java历史发展的故事
java技术体系的一些发展故事你好我是idea。本专栏我们来一起聊聊关于java虚拟机家族发展的故事内容,本文可能不会讲解过多关于技术原理相关的内容,更多的相关知识点会比较有趣味些。在1990年的时候,有几个技术宅开始在研究一种能够支持跨平台的系统。为什么C语言不具备有较好的跨平台特性?使用C语言编辑出来的文件最终是二进制格式的,但是不同的cpu对于这些二进制识别的规则不一致,这就容易导致C语言写出来的东西在A-cpu上边可以运行,但是在B-cpu中不能运行,所以说C语言在跨平台方面做的不够完善。原创 2021-01-10 23:30:09 · 453 阅读 · 0 评论