虚拟机对象揭秘

2020-03-07  本文已影响0人  小孩真笨

对象创建过程

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

对象构成

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

对象的访问定位

  1. 句柄
  2. 直接指针

补充

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

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

两种字符串创建区别

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

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

上一篇 下一篇

猜你喜欢

热点阅读