gpt4 book ai didi

java - 在本地方法和堆内存中创建字符串

转载 作者:行者123 更新时间:2023-11-30 06:01:04 25 4
gpt4 key购买 nike

我在类中有一个方法,我可以在其中创建这样的字符串:

private void log(HttpServletRequest request, HttpServletResponse response) {
String result = "Following request " + request.getRequestURI() + " yielded " + response.getStatus();
log.info(result);
}

我的问题是,result 字符串生成了数百万次。对堆内存有影响吗?

我目前的理解是每个方法都有自己的堆内存分配。方法完成执行后,所有局部变量从内存中消失。

我的另一种理解是,字符串存储在全局堆内存中,它们会在下一个垃圾收集周期中被清理掉。

有人可以解释一下吗,我将不胜感激。

最佳答案

该方法每次执行时,都会在堆内存中创建一个String对象,并在栈上为其分配一个本地引用。此本地引用将传递给 log.info(),并假设该方法不会将结果保存在任何地方,一旦它返回,堆中的该对象将有资格进行垃圾回收。

只要您的结果没有对它的永久引用,它就不会对您的程序内存产生永久影响。

关于java - 在本地方法和堆内存中创建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097120/

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