java - JVM 字符串存储在内存中

标签 java memory jvm

有什么区别(内存方面)

private static final String FAILURE_MESSAGE=    "...";

protected String getFailedMsg() {
    return FAILURE_MESSAGE;
}

protected String getFailedMsg() {
    return "...";
}

假设 FAILURE_MESSAGE 仅从上述函数中引用。

我的意思是在上述情况下,上述对象/字符串保存在内存中的位置和方式? 它是特定于 JVM 的吗?

编辑:我知道字符串在第一种方法中是驻留的,但是在调用函数之前,在第二种方法中它的值存储/保存/(驻留?)在哪里?

事后的第二次编辑 - 如果字符串被替换为整数或其他一些不是字符串的类怎么办?

最佳答案

第一个示例无法编译,而第二个示例可以。

性能通常不如简单性和清晰性重要,这里有一个很好的例子。如果编译成功,第一个示例将和第二个示例一样快。

顺便说一句:不管一个字符串文字被使用了多少次,在多少类中,它们都是String.intern()。所以它们都是同一个对象。

关于java - JVM 字符串存储在内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9716533/

相关文章:

java - 在实体中存储对 Blob 的引用

java - 添加操作栏(Android 教程)

c# - 您更喜欢 'materializing' IEnumerables?

java - 如何清空java线程栈内存区域?

java - 在 VMware ESX 虚拟机上构建 Maven 期间性能缓慢

java - Eclipse Gradle STS 扩展 : Could not reserve enough space for object heap

java - 使用picasso从json数据获取图像时出现空值

java - GUI 日历 DefaultTableModel Addig MouseListeners

c - 'while loop' 内存在 C 编程中如何工作?

Python 大字节数组内存