美文网首页
虚拟机对象揭秘

虚拟机对象揭秘

作者: 小孩真笨 | 来源:发表于2020-03-07 16:31 被阅读0次

对象创建过程

对象的创建过程,最好是能记住,并且能知道每一步在做什么。

对象构成

HotSpot 虚拟机中,对象在内存中的布局可以分为三块区域:

  • 对象头:对象头中包含两部分信息,
    • 第一部分用于存储对象自身运行时数据(哈希码,GC 分代年龄,锁状态标志),
    • 另一部分是类型指针,即指向它的类元数据的指针,虚拟机通过这个指针来确定这个对象是哪个类的实例。
  • 实例数据:存储的对象的有效信息。
  • 对齐填充:对齐填充起到的是占位的作用。

对象的访问定位

  1. 句柄
  2. 直接指针

补充

String str1 = "abcd";
String str2 = new String("abcd");
System.out.println(str1==str2);//false

这两种方式创建的对象是有差别的,第一种方式是在常量池中,第二种方式是在堆内存中。

两种字符串创建区别

直接使用双引号声明创建出来的 String 对象会直接存储在常量池中。

注: String.intern() 是一个 Native 方法,它的作用是:如果运行时常量池中已经包含一个等于此 String 对象内容的字符串,则返回常量池中该字符串的引用;如果没有,则在常量池中创建与此 String 内容相同的字符串,并返回常量池中创建的字符串的引用。存在变量可重用的可能,因此不能用于作为锁对象。

相关文章

  • Hotspot虚拟机对象揭秘

    Hotspot虚拟机对象揭秘 这部分我们主要分三部分:对象的创建、对象的内存布局、对象的访问定位。这里说的都是堆。...

  • 虚拟机对象揭秘

    对象创建过程 对象的创建过程,最好是能记住,并且能知道每一步在做什么。 对象构成 HotSpot 虚拟机中,对象在...

  • HotSpot虚拟机对象揭秘

    了解了虚拟机内存分配过后,我们就HotSpot虚拟机和常用额Java堆为例,探索一下对象的分配、布局以及访问的全过...

  • jvm-Hotspot虚拟机对象揭秘

    1.对象的创建过程 1.1类加载检查 虚拟机遇到一条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定...

  • 《深入理解Java虚拟机:JVM高级特性与最佳实践》读书笔记(二

    HotSpot虚拟机对象探秘 对象的创建 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小...

  • (二)jvm-Java对象的创建,访问

    以Hotspot虚拟机为例,描述对象的 创建过程。 对象的创建 通过new关键字创建对象 虚拟机在遇到new关键字...

  • Java对象

    本文以HotSpot虚拟机为例,介绍Java对象在虚拟机中存储和使用方式。 对象的内存布局 对象在内存中存储布局可...

  • 书单

    《揭秘Java虚拟机:JVM设计原理与实现》(10分)分析 hotspot jvm 的实现(c/c++层)内存模型...

  • HotSpot虚拟机对象探秘

    存篇:HotSpot虚拟机对象探秘

  • jvm<二> 内存管理

    java虚拟机回收gc roots 查找机制gc roots对象可达, 不会被释放1.虚拟机栈本地变量表引用的对象...

网友评论

      本文标题:虚拟机对象揭秘

      本文链接:https://www.haomeiwen.com/subject/dibcdhtx.html