我在一个方法中有两个局部变量,如下所示,
int i=10;
String test="test";
据我所知,这些变量仅适用于特定方法,这些变量应该存储在堆栈中,字符串类型也会存储在堆栈中吗?
最佳答案
变量本身(对 String 实例的引用)将存储在堆栈中。
String 实例(包含 char[]
和实际数据)通常存储在堆中。不过,这要由 JVM 来优化。它可能是来自永久池的字符串,或者如果完成了逃逸分析(并且保证字符串不会离开本地范围),它也可能选择在堆栈上分配它。
所有对象和数组都是如此。只有基元不同(因为它们作为值传递,而不是作为对其他地方分配的数据结构的引用)。
关于java - string类型的局部变量存放在栈还是堆上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2099115/