什么是Java中的字符串本地内存?

时间:2010-05-25 06:16:25

标签: java string memory jvm

在JVM中,内存分为方法区,堆栈,堆,临时和注册表。什么是字符串本地内存?这是否存在?如果是,何时分配或分配? 适当使用这个?

谢谢

4 个答案:

答案 0 :(得分:5)

我不确定术语“字符串本地内存”是什么意思,但是在VM中存在字符串文字池这样的东西,其中字符串文字被合并(并重用)。请参阅Java语言规范中的3.10.5节:

http://java.sun.com/docs/books/jls/second_edition/html/lexical.doc.html#100960

上面提到的其他内容在VM规范的运行时数据区域中详细介绍:

http://java.sun.com/docs/books/jvms/second_edition/html/Overview.doc.html#1732

希望能解释一下(使用正确的术语)。

答案 1 :(得分:3)

我之前从未听说过,谷歌搜索没有发现任何提及它。你能告诉我们你在哪里听说过Java的“字符串本地内存”吗?我不相信这是一个标准术语。

(就JVM而言,我真的不确定“temp”或“registry”是什么意思。)

答案 2 :(得分:3)

  

在JVM中,内存被拆分为   方法区域,堆栈,堆,温度和   注册表中。

不,不是。它分为堆栈,堆,方法区域和常量池。见the JVM Specification

  

什么是字符串本地内存?

不知道。什么是'Temp'和'Registry'?

无论你从哪里得到它都是错误的。

答案 3 :(得分:2)

从未听说过“字符串本地记忆”。不过,我听说过“线程本地”内存。这就是访问给定ThreadLocal对象的每个线程获取不同值的地方,完全取决于它所在的线程。我还没需要使用它 - 如果你问我,感觉太神奇了。

有关详细信息,请参阅http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ThreadLocal.html

我之所以提到这一点是因为“字符串”和“线程”在“长而灵活,非常非常瘦的材料”的背景下意味着非常类似的东西,并且来回翻译可以解释混淆。