Java内存运行机制

jvm内存分配大致分为:

  栈:存储变量

  堆:存储对象(只要看到new就是开辟了内存空间,允许重复)

  常量池:顾名思义就是常量(例如字符串,数字。。。)

    特点:常量池中的数据是不存在重复的。

eg:

  String str1 = "Star";

  String str2 = new String("Star");

  String str3 = "star";

他们互不相等:

  str1直接指向了常量池中的内存地址。

  str2首先是指向了堆内存地址,然后堆内存地址指向了常量池中的内存地址。

  str3直接指向了常量池中的内存地址,但是因为常量池中不允许重复,java严格区分大小写,所以。。。

原文地址:https://www.cnblogs.com/laodang/p/9465039.html