• 从HotSpot VM源码看字符串常量池(StringTable)和intern()方法

    时间:2023-02-10 23:48:21

    引言字符串常量池(StringTable)是JVM中一个重要的结构,它有助于避免重复创建相同内容的String对象。那么StringTable是怎么实现的?“把字符串加入到字符串常量池中”这个过程发生了?intern()方法又做了什么?上面的问题在JDK6和JDK7中又有什么不一样的答案?网络上已经...

  • 《深入理解Java虚拟机》第三章读书笔记(二)——HotSpot垃圾回收算法实现(OopMap,安全点安全区域,卡表,写屏障,三色标记算法)

    时间:2023-02-02 22:09:40

    系列文章目录和关于我前面《深入理解Java虚拟机》第三章读书笔记(一)——垃圾回收算法我们学习了垃圾回收算法理论知识,下面我们关注下HotSpot垃圾回收算法的实现,分为以下几部分对象是垃圾的判断依据 GC Roots 是如何高效扫描的如何解决跨代引用对象的垃圾回收问题如何降低垃圾回收STW的时长—...

  • Ubuntu下使用ap-hotspot出现“Another process is already running"问题的解决方案

    时间:2023-01-31 07:07:11

    参考Problem with ap-hotspot 问题描述: This is the message displayed in my terminal screen when I typed sudo ap-hotspot startAnother process is already ru...

  • Java数组在HotSpot中使用内存的准确程度(即多少slop)?

    时间:2023-01-23 17:19:58

    C malloc implementations typically don't allocate the precise amount of memory requested but instead consume fixed-size runs of memory, e.g. with powe...

  • java 内存管理 —— 《Hotspot内存管理白皮书》

    时间:2023-01-16 10:54:09

    说明  要学习Java或者任意一门技术,我觉得最好的是从官网的资料开始学习。官网所给出的资料总是最权威最知道来龙去脉的。而Java中间,垃圾回收与内存管理是Java中非常重要的一部分。《Hotspot内存管理白皮书》是了解Java垃圾收集器最权威的文档。相比于其他的一些所谓翻译文章,本文的翻译更加准...

  • 深入理解Java虚拟机(二)——HotSpot对象创建、内存、访问

    时间:2023-01-05 21:03:13

    对象的创建虚拟机遇到一条字节码new指令时,开始对象创建过程。首先去检查这个指令的参数是否能在常量池定位到一个类的符号引用;检查这个符号引用代表的类是否已被加载、解析和初始化,如果没有就必须执行相应的类加载过程;根据方法区中该类的信息确定对象的所需空间大小;虚拟机为新生对象分配内存;将对象实例的内存...

  • 在Hotspot VM中,Oop映射到底意味着什么

    时间:2023-01-02 20:13:27

    I read from some documents that Hotspot VM utilizes a data structure called Oop Maps to manage all OOPs in VM. My question is that when does this Oop ...

  • HotSpot JVM里的G1垃圾收集器

    时间:2023-01-02 16:41:50

    http://ivywang.iteye.com/blog/2146645 G1垃圾收集器 HotSpot JDK 7从update 4开始引入了G1垃圾收集器。 G1收集器是服务器风格的垃圾回收器,主要针对多处理器机器上占用大量内存的应用。G1能缩短暂停时间,也能提供高吞吐量。 与CMS的区...

  • 深入理解java虚拟机(二)HotSpot Java对象创建,内存布局以及访问方式

    时间:2023-01-02 14:10:02

    内存中对象的创建、对象的结构以及访问方式。 一、对象的创建 在语言层面上,对象的创建只不过是一个new关键字而已,那么在虚拟机中又是一个怎样的过程呢? (一)判断类是否加载。虚拟机遇到一条new指令的时候,首先会检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号代表的类是否被...

  • HotSpot虚拟机对象探秘(对象创建,对象内存布局,对象访问定位)

    时间:2023-01-02 14:15:08

    以常用的HotSpot虚拟机和JAVA内存区域堆为例,探讨对象的创建,对象的内存布局以及对象的访问定位   一.对象的创建 1)类加载:虚拟机遇到一条new指令时,先检测这个指令的参数能否在常量池中定位到一个类的符号的引用,并检查这个符号代表的类否收以及被加载,解析和初始化,如果没有那么就必须执行相...

  • Java对象创建、分配、布局、访问小析(HotSpot虚拟机)(三)

    时间:2023-01-02 14:14:56

    本文内容总结自周志明先生所编著的《深入理解Java虚拟机-JVM高级特性与最佳实践》此书的经典不必多说。本节内容是对象的定位访问。 在java中我们无时无刻不在创建对象,我们创建对象的目的当然是为了使用它了。但是我们怎么才能使用操作创建的对象呢?我们的java程序会通过栈上的reference数据(...

  • Java对象创建、分配、布局、访问小析(HotSpot虚拟机)(一)

    时间:2023-01-02 14:14:44

    本文内容总结自周志明先生所编著的《深入理解Java虚拟机-JVM高级特性与最佳实践》此书的经典不必多说。本节内容是对象的创建.、分配的内容。 对象的创建 java对象的创建有几种方式呢(这里所说的java对象仅限于普通java对象不包含数据和Class对象)?大致有以下四种方式: new关键字。...

  • 深入理解java虚拟机(四)垃圾收集算法及HotSpot实现

    时间:2023-01-02 13:19:06

    垃圾收集算法 一般来说,垃圾收集算法分为四类: 标记-清除算法 最基础的算法便是标记-清除算法(Mark-Sweep)。算法分为“标记”和“清除”两个阶段:首先标记处需要收集的对象,在标记完成之后,再统一回收所有被标记的对象。 这是最简单的一种算法,但是缺点也是很明显的:一个是效率问题,标记...

  • HotSpot虚拟机对象探秘

    时间:2023-01-02 12:31:56

    对象创建:当虚拟机遇到一条new指令时,首先将检查这个指令参数能否在常量池中定位到一个类的符号引用,并检查这个类的符号引用是否被加载、解析和初始化,如果没有,必须先执行类的加载过程。 在类完成加载后,虚拟机便会为类分配内存,而内存的大小在类加载完成时就已经确定了,若Java堆的内存是绝对规整的,即用...

  • 《深入理解Java虚拟机》:HotSpot虚拟机内的即时编译器

    时间:2023-01-02 12:22:43

    HotSpot虚拟机内的即时编译器最近在看周志明老师的《深入理解Java虚拟机》这本书,看了之后感觉收获挺多的,于是就写点读书总结吧。先看如下问题: 1、 为何HotSpot虚拟机要使用解释器与编译器并存的架构? 2、 为何HotSpot虚拟机要实现两个不同的即时编译器? 3、 ...

  • [置顶] 深入理解java虚拟机(五):hotspot垃圾收集算法实现

    时间:2023-01-02 12:13:45

    深入理解java虚拟机(一):java内存区域(内存结构划分)深入理解java虚拟机(二):java内存溢出实战 深入理解java虚拟机(三):String.intern()-字符串常量池深入理解java虚拟机(四):对象存活判定算法和垃圾收集算法深入理解java虚拟机(五):hotspot垃圾...

  • JVM—HotSpot虚拟机探秘

    时间:2023-01-02 12:13:27

    一.对象的创建 执行new指令:常量池查能否查到类的符号引用 并且检查该符号引用代表的类是否被加载、解析和初始化过,若没有执行类加载 新生对象分配内存:java堆中划分指定大小(类加载完可以完全确定)的内存给新生对象,若java堆内存完全规整,使用指针碰撞(指针往空闲区偏移),若不规整采用...

  • Hotspot虚拟机对象探秘

    时间:2023-01-02 12:08:48

    对象的创建 虚拟机在遇到一条new指令时,首先去检查这条指令的参数能否在常量池中定位到一个类的符号引用,并检查该类是否被加载过。如果没有,先执行类加载的过程。 类加载检查完成之后,接下来虚拟机为新生对象分配内存。对象所需要的内存大小在类加载完成之后就可以完全确定,为对象分配内存的任务等同于把一块大小...

  • 深入理解JVM-hotspot虚拟机对象探秘

    时间:2023-01-02 12:04:14

    1.背景与大纲 在我们了解了java虚拟机的运行时数据区后,我们大概知道了虚拟机内存的概况,但是我们还是不清楚具体怎么存放的访问的; 接下来,我们将深入探讨HotSport虚拟机在java堆中对象的分配、布局、访问的全过程。 2.对象创建 1.类加载:当遇到new指令时,先判断这个类是否被加载、解...

  • 【002】【HotSpot虚拟机对象探秘】

    时间:2023-01-02 12:04:20

    Java虚拟机学习总结目录 对象创建 Java 是一门面向对象的编程语言,在Java 程序运行过程中无时无刻都有对象被创建出来.在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new 关键字而己,而在虚拟机中,对象(指普通Java 对象,非数组和Class 对象等) 的创建是一个非常复...