随笔分类 - JVM
摘要:前言 在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习: 产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用呢? 我:当然,如果说垃圾收集算法是打狗棒法,那么垃圾收集器就是历届的丐帮帮主们,不同的帮主领悟到的
阅读全文
摘要:纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了。从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经了三个选题,最终定下来了这个。 这个名字的由来,且听我给你慢慢道来,从学习知识的角度上来说,最深入的
阅读全文
摘要:这两天,广州的天气又开始热了起来,又到了小动物交配的季节,啊呸,又到了一个收割 offer 的季节。年底将至,又到了面试的高峰期,JVM 作为Java 程序员面试绕不过的一道坎儿,它又来了,你准备好了吗? 说说引用 面试官 A:小伙几,上篇我们说到了 JVM 收集的两种算法 —— 引用记数法和可达性
阅读全文
摘要:前言 上篇文章,我们了解了GC 的相关概念,这篇文章我们通过两个算法来了解如何去确定 堆中的对象实例 哪些是我们需要去回收的 垃圾对象 。 引用计数算法 引用计数法的原理很简单,就是在对象中维护一个计数器,当有一个对象引用它的时候,该计数器的值就会加一,当这个引用失效的时候,计数器的值就会减少一,当
阅读全文
摘要:前言 在「对象内存布局」一节中,我们了解到对象头中包含了一个叫做 类型指针 的东西,即对象指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。但是,并不是所有的虚拟机都是这么去做的。不同的虚拟机关于这点有不同的实现,目前主流的方式可以分为 句柄 和 直接指针 句柄 由图中我们可以
阅读全文
摘要:64位JVM和32位JVM 最初的时候,JVM是32位的,但是随着64位系统的兴起,JVM也迎来了从32位到64位的转换,32位的JVM对比64位的内存容量比较有限,但是我们使用64位虚拟机的同时,也带来了一个问题,64位下的JVM中的对象会比32位中的对象多占用1.5倍的内存空间,这是我们不想看到
阅读全文
摘要:前言 GC(Garbage Collection)是我们在学习 JVM 的过程中不可避免的一道坎,接下来,我们就来系统的学习一下 GC。 做一件事情之前,我们一定要去知道我们为什么要去做,这里不仅仅指 GC,更适用我们日常的学习和生活,知其然,知其所以然,方能百战不殆。 下面我们先去了解为什么要有
阅读全文
摘要:概览 一个对象根据不同情况可以被划分成两种情况,当对象是一个非数组对象的时候,对象头,实例数据,对齐填充在内存中三分天下,而数组对象中在对象头中多了一个用于描述数组对象长度的部分 对象头 对象头分为两部分,第一部分称之为 "Mark Word" ,第二部分是用于获取该对象类型的 类型指针 ,如果是数
阅读全文
摘要:面向对象 众所周知,Java是一门面向对象的高级编程语言,那么现在问题来了,对象从哪来呢?有些人会说通过new关键字来创建一个对象,说的很好,本篇我们就来解密在new一个对象的过程中,JVM都给我们做了什么工作。 走哪来,到哪去 一个对象的诞生必定有一个类,通常我们都是通过new关键字实例化一个类来
阅读全文
摘要:前言 上一篇中,我们了解了JVM中的线程独占区,这节课我们就来了解一下JVM中的线程共享区,JVM中的线程共享区是跟随JVM启动时一起创建的,包括堆(Heap)和方法区()两部分,而线程独占区的程序计数器,虚拟机栈,本地方法栈的生命周期都是跟随线程的,随线程的创建而诞生,随线程的销毁而销毁。 堆(H
阅读全文
摘要:前言 如果我们对计算机组成有所了解,那么我们一定会知道在计算机中有一块儿特殊的区域,称之为寄存器,寄存器包括了指令寄存器和程序计数器,这两样位于CPU中,作为程序运行的 大脑 来控制程序的运行和流转。 而在JVM中,作为一种虚拟机,JVM没有指令寄存器,它是基于 栈 + 程序计数器 的体系结构来完成
阅读全文
摘要:我行过许多地方的桥,看过许多次数的云,喝多许多种类的酒,却只爱过一个正当年龄的JVM
阅读全文

浙公网安备 33010602011771号