
JVM
JVM系列博文
山禾说
胸中有沟壑,眼里存山河
展开
-
《给产品经理讲JVM》:垃圾收集器
前言在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习:产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用呢?我:当然,如果说垃圾收集算法是打狗棒法,那么垃圾收集器就是历届的丐帮帮主们,不同的帮主领悟到的自然也就不同,我先对这些帮主进行一个简单的介绍,看图!我:我从回收的区域去对垃圾收集器进行了一个...原创 2020-04-21 08:57:53 · 705 阅读 · 0 评论 -
「给产品经理讲JVM」:垃圾收集算法
纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了。从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经了三个选题,最终定下来了这个。这个名字的由来,且听我给你慢慢道来,从学习知识的角度上来说,最深入的方法就是把知识讲给别人听,那么为什么我要讲给程序员的天敌——产品经理呢?那么问题的答案很简单,因为...原创 2020-04-13 08:19:07 · 508 阅读 · 0 评论 -
「 Offer收割机之JVM」:生存还是毁灭
这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节。年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了吗?说说引用面试官 A:小伙几,上篇我们说到了 JVM 收集的两种算法 —— 引用记数法和可达性分析算法,你对这两种算法的理解很清晰,那么这两种算法有一个很重要的点,就是『引用』,其实无论是引用...原创 2020-03-27 06:51:41 · 401 阅读 · 0 评论 -
「每日五分钟,玩转JVM」:两种算法
前言上篇文章,我们了解了GC 的相关概念,这篇文章我们通过两个算法来了解如何去确定堆中的对象实例哪些是我们需要去回收的垃圾对象。引用计数算法引用计数法的原理很简单,就是在对象中维护一个计数器,当有一个对象引用它的时候,该计数器的值就会加一,当这个引用失效的时候,计数器的值就会减少一,当计数器的值为零的时候,就意味着这个对象是一个垃圾对象,需要被 GC 回收,这个算法是一个比较高效的算法,但...原创 2020-03-26 09:53:55 · 279 阅读 · 0 评论 -
「每天五分钟,玩转 JVM」:对象访问定位
前言在「对象内存布局」一节中,我们了解到对象头中包含了一个叫做类型指针的东西,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。但是,并不是所有的虚拟机都是这么去做的。不同的虚拟机关于这点有不同的实现,目前主流的方式可以分为句柄和直接指针句柄由图中我们可以看到,在我们的堆中被划分出了一块单独的部分,叫做句柄池,句柄池的作用就像一个中转站,我们要查询位于堆内存中的...原创 2020-03-25 14:19:38 · 255 阅读 · 0 评论 -
「每日五分钟,玩转JVM」:对象内存布局
概览一个对象根据不同情况可以被划分成两种情况,当对象是一个非数组对象的时候,对象头,实例数据,对齐填充在内存中三分天下,而数组对象中在对象头中多了一个用于描述数组对象长度的部分对象头对象头分为两部分,第一部分称之为**“Mark Word”,第二部分是用于获取该对象类型的类型指针**,如果是数组对象还包括记录数组长度的数据。在不同的操作系统中,这些区域所占的内存也不同,在32位的系统中,...原创 2020-03-24 08:49:05 · 226 阅读 · 0 评论 -
「每天五分钟,玩转 JVM」:对象访问定位
面向对象众所周知,Java是一门面向对象的高级编程语言,那么现在问题来了,对象从哪来呢?有些人会说通过new关键字来创建一个对象,说的很好,本篇我们就来解密在new一个对象的过程中,JVM都给我们做了什么工作。走哪来,到哪去一个对象的诞生必定有一个类,通常我们都是通过new关键字实例化一个类来获取该类的一个对象,类在加载的过程中会经历一系列的检查,解析,初始化等一系列的过程,我们会在后面详细...原创 2020-03-23 08:52:36 · 234 阅读 · 0 评论 -
JVM(一):久识你名,初居我心
聊聊JVM JVM,一个熟悉又陌生的名词,从认识Java的第一天起,我们就会听到这个名字,在参加工作的前一两年,面试的时候还会经常被问到JDK,JRE,JVM这三者的区别...原创 2019-07-26 07:00:00 · 498 阅读 · 0 评论 -
JVM(二):画骨
概述 我们首先来认识一下JVM的运行时数据区域,如果说JVM是一个人,那么运行时数据区域就是这个人的骨架,它支撑着JVM的运行,所以我们先来学习一下运行时数据区域的分类和...原创 2019-08-05 07:00:00 · 686 阅读 · 2 评论 -
每日五分钟,玩转JVM(三):线程独占区
前言 如果我们对计算机组成有所了解,那么我们一定会知道在计算机中有一块儿特殊的区域,称之为寄存器,寄存器包括了指令寄存器和程序计数器,这两样位于CPU中,作为程序运行的大...原创 2019-08-20 07:00:00 · 577 阅读 · 0 评论 -
「每日五分钟,玩转JVM」:线程共享区
前言 上一篇中,我们了解了JVM中的线程独占区,这节课我们就来了解一下JVM中的线程共享区,JVM中的线程共享区是跟随JVM启动时一起创建的,包括堆(Heap)和方法区(...原创 2019-08-27 07:00:00 · 541 阅读 · 0 评论 -
「每日五分钟,玩转 JVM」:GC概览
前言GC(Garbage Collection)是我们在学习 JVM 的过程中不可避免的一道坎,接下来,我们就来系统的学习一下 GC。做一件事情之前,我们一定要去知道我们为什么要去做,这里不仅仅指 GC,更适用我们日常的学习和生活,知其然,知其所以然,方能百战不殆。下面我们先去了解为什么要有 GC,以及 GC 在 JVM 中扮演了一个什么样的角色,起到了什么的作用?为什么要有 GC用过...原创 2019-11-15 09:16:07 · 857 阅读 · 0 评论 -
「每日五分钟,玩转JVM」:指针压缩
64位JVM和32位JVM 最初的时候,JVM是32位的,但是随着64位系统的兴起,JVM也迎来了从32位到64位的转换,32位的JVM对比64位的内存容量比较有限,但是我们使用64位虚拟机的同时,也带来了一个问题,64位下的JVM中的对象会比32位中的对象多占用1.5倍的内存空间,这是我们不想看到的(又要马儿跑,又要马儿不吃草可还行?),但是机智的程序员不会屈服,所以在JDK 1.6的版本后,...原创 2020-01-07 06:51:20 · 856 阅读 · 0 评论