【JVM技术点速记 | 垃圾收集与内存分配】教程文章相关的互联网学习教程文章

jvm复习2之内存布局【图】

这里强烈推荐看一下我jvm复习1中的知识框架,关于内存布局这块,我觉得我梳理的流程还是不错的了。 不过作为学习的话,光有框架是肯定不够的,我们需要将架子里面的内容填充完善。我来简单讲讲内存区域吧,强烈推荐看书 运行时的内存区域程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的 字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器 的值来选取下一条需要执...

JVM学习笔记(七):Class文件结构【代码】【图】

1 来源来源:《Java虚拟机 JVM故障诊断与性能优化》——葛一鸣 章节:第九章本文是第九章的一些笔记整理。 2 概述 本文主要介绍了Class文件的主要组成,包括魔数、版本号、常量池、访问标志等。 3 Class文件概览 根据JVM规范,一个Class文件可以非常严谨地描述为: ClassFile{u4 magic;u2 minor_version;u2 major_version;u2 constant_pool_count;cp_info constant_pool[c...

关键业务系统的JVM参数推荐(2018仲夏版) (强烈推荐 唯品会)

年更贴,因为两年里遇到的事情,一些想法变了。也补充了不少VJTools的内容,比如为伸手党们准备的jvm-options.sh。在关键的业务系统里,除了继续追求技术人员最爱的高吞吐与低延时之外,系统的稳定性与排查问题的便捷性也很重要。这是本文的一个原则,后面也会一次又一次的强调。 前言1,资料1. 学习开源项目的启动脚本是个不错的主意,比如ElasticSearch家的,Cassandra家的, 附送一篇解释它的文章。2. VJTools的 jvm-options.sh...

JVM入栈字节码指令【图】

对应指令码 助记符 说明0x00 nop 什么都不做0x01 aconst_null 将null推送至栈顶0x02 iconst_m1 将int型-1推送至栈顶0x03 iconst_0 将int型0推送至栈顶0x04 iconst_1 将int型1推送至栈顶0x05 iconst_2 将int型2推送至栈顶0x06 iconst_3 将int型3推送至栈顶0x07 iconst_4 将int型4推送至栈顶0x08 iconst_5 将int型5推送至栈顶0x09 lconst_0 将long型0推送至栈顶0x0a lconst_1 将long型1推送至栈顶0x0b fconst_0 将float型0推送至栈顶...

什么情况下JVM内存中的一个对象会被垃圾回收?

新生代满了会触发 Young GC,老年代满了会触发 Old GC。GC时会回收对象,那么具体是什么样的对象会被垃圾回收器回收呢?可达性分析算法,判断是否被 GC Roots 引用 判断引用类型:强引用、软引用、弱引用、虚引用 是否调用finialize()方法自救首先,JVM 会通过可达性分析算法来判断哪些对象会被回收,哪些不会被回收。可达性分析算法会从一个对象触发,一层层向上,分析有谁在引用它,看是否有一个 GC Roots。 被 GC Roots 引用的对...

【JVM】垃圾收集器和收集器的选择策略

前言:新生代的收集器有:Serial,ParNew,Parallel Scavenge等。老年代有:CMS,SerialOld,Paraller Old等。接下来将深入理解各个垃圾收集器的原理,以及它们如何在不同场景下进行搭配使用。 同时,先解释几个名次: 并行(Parallel):多个垃圾收集线程并行工作,此时用户线程处于等待状态 并发(Concurrent):用户线程和垃圾收集线程同时执行 吞吐量:运行用户代码时间/(运行用户代码时间+垃圾回收时间)(一) 新生代的收集器们...

深入理解JVM内存模型【图】

我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子。 同样,根据摩尔定律,我们知道...

JVM内存分配与回收【图】

如何判断对象是否被持有引用?引用计数算法定义:引用计数算法(Reference Counting):给对象添加一个引用计数器,每当一个地方引用它时,计数器值就+1;当引用失效时,计数器值就-1;任何时刻计数器为0的对象就是不可能被再使用的。优点:实现简单,判定效率高;微软的COM技术、Python中都使用了Reference Couting算法进行内存管理。缺点:由于其很难解决对象之间相互循环引用的问题,主流Java虚拟机里面都没有选用Refrence Couti...

jvm内存模型和内存分配【图】

1.什么是jvm? (1)jvm是一种用于计算设备的规范,它是一个虚构出来的机器,是通过在实际的计算机上仿真模拟各种功能实现的。 (2)jvm包含一套字节码指令集,一组寄存器,一个栈,一个垃圾回收堆和一个存储方法域。 (3)JVM屏蔽了与具体操作系统平台相关的信息,使Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。 JVM在执行字节码时,实际上最终还是把字节码解释成具体平台上的机器...

JVM篇-oop-klass模型对类的描叙及类加载&实例化内存申请过程【代码】【图】

一、oop-klass描叙 1、介绍 ? 在JVM内存用到了oop-klass模型来描叙对应的类及对象:oop(ordinary object ponter,普通对象指针),其是用来描叙对象的实例信息。klass,其是JVM内部用来描叙类的信息的,例如Java类的继承信息,成员方法等信息。同时JVM还有一种类型来封装对oop类型的行为-handle。2、handle class Handle VALUE_OBJ_CLASS_SPEC {private:oop* _handle;protected:oop obj() const { r...

JVM内存模型和GC垃圾回收【图】

JVM 内存区域1、程序计数器 这是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的行号指示器,指的是上次代码被执行的地方,线程私有。 2、Java 虚拟机栈 它是 Java方法执行的内存模型,每一个方法被调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程,线程私有。 3、本地方法栈 跟虚拟机栈类似,不过本地方法栈用于执行本地方法,线程私有。 4、Java 堆 该区域存在的唯一目的就是存...

深度解析(图文)JVM垃圾收集器(二)【图】

通过上篇文章,我们知道在JVM中对象的分配、哪些对象是需要回收以及垃圾回收器中用到的算法,这篇文件主要讲解在JVM中所有的垃圾回收器以及各个垃圾回收器是如何回收 一:垃圾收集器搭配以及概念 如图所示,按照对空间的划分垃圾收集器可分为年轻代和老年代垃圾收集器 年轻代收集器:Serial、ParNew、Parallel Scavenge 老年代收集器:CMS、Serial Old、Parallel Old 整堆收集器:G1 并行收集器:指多条垃圾收集线程并行工作,但此...

[转帖]详解JVM内存布局及GC原理,值得收藏【代码】【图】

概述https://www.toutiao.com/i6731345429574713868/ java发展历史上出现过很多垃圾回收器,各有各的适应场景,不仅仅是开发,作为运维也需要对这方面有一定的掌握,今天简单介绍一下java的内存布局以及各种垃圾回收器的原理。JVM内存布局 JVM从概念上大致分为6个(逻辑)区域: 这6块区域按是否被线程共享,可以分为两大类: 一类是每个线程所独享的: 1)PC Register:也称为程序计数器, 记录每个线程当前执行的指令信。eg:...

JVM类加载机制【代码】【图】

概述虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向...

jvm源码解读--09 创建oop对象,将static静态变量放置在oop的96 offset处 第二篇【代码】

先打断点systemDictionary.cpp 1915行Universe::fixup_mirrors(CHECK);进入void Universe::fixup_mirrors(TRAPS) {// Bootstrap problem: all classes gets a mirror (java.lang.Class instance) assigned eagerly,// but we cannot do that for classes created before java.lang.Class is loaded. Here we simply// walk over permanent objects created so far (mostly classes) and fixup their mirrors. Note// that the numb...