在java中将Local对象存储在哪里

时间:2014-09-10 06:27:09

标签: java string heap-memory

我正在引用java的一些基本基础知识,因为我遇到了堆栈和堆。 因为我理解Heap是主存储器,实例意味着将存储类的对象,并且将存储类Variable。

查看存储所有方法和局部变量以及方法的堆栈。

现在我的困惑是如果我创建任何类对象让我们说String对象本地进入方法及其类String的实例然后可以存储它。我没有得到任何人建议的正确结论。

如果有可能与其他任何内容重复,我会道歉,因为我找不到类似内容,以便明白我的理解,我需要帮助。

这里是工作示例。

public class CreatingLcoalString {
      public void methodstring(){

          String s = new String("This is the area of confustion"); // this is the area of confustion
          System.out.println(s);
      }

      public static void main(String argsp[]){

          new CreatingLcoalString().methodstring();
      }
}

1 个答案:

答案 0 :(得分:2)

引用 s将存储在堆栈中。它将指向上的String对象。 (忽略逃逸分析)。

在您的情况下,将创建2个String对象。一个在堆上,另一个在String Constant池中(堆的一部分)。

"This is the area of confustion" will be present in 2 places. Both are on the heap.

PS:转义分析可能导致String存储在堆栈中。这是自jdk 6 update 23以来引入的一种特殊优化机制。 更多内容herehere