gpt4 book ai didi

java - Java如何高效管理内存

转载 作者:行者123 更新时间:2023-12-02 06:36:52 26 4
gpt4 key购买 nike

字符串在java中是不可变的,即每次我们对字符串对象进行更改时,它都会创建一个新实例,而旧对象将不再被引用,即浪费。所以在一个大的程序中会有很多未引用的对象无法访问。 java可以管理这个吗?如何?例如-

String s="abc";
s=s.concat("def");

现在对象“abc”根本无法被引用,但由于字符串是不可变的,它仍然存在于内存池中。

最佳答案

首先,听起来您需要 Java 和垃圾收集中的崩溃源。话虽如此,有几个基本点需要澄清:

1) 对象不可变并不意味着它的内存会泄漏。如果不存在对不可变对象(immutable对象)的引用,则它与任何其他对象一样有资格进行垃圾回收。

2) 字符串常量是一个异常(exception),因为它们始终被 JVM 保留。这意味着字符串常量保存在一个特殊的内存池中,并且每当创建字符串时,都会首先检查该池以查看该字符串是否已存在。如果是,则返回对其的引用。 (您可以使用 String.intern() 方法强制非常量字符串加入池中)。

3)这些字符串占用的内存量非常小,您基本上不必担心它。

关于java - Java如何高效管理内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19557720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com