gpt4 book ai didi

Java 字符串内存泄漏

转载 作者:IT王子 更新时间:2023-10-28 23:36:52 26 4
gpt4 key购买 nike

我不是 java 专家。

我的代码正在将文件读入 String。此代码每 5 分钟执行一次。文件大小不同。有时是 100 有时是 1000 行。

几天后,我经历了内存不足。

我的问题是,当我的代码超出 读取文件函数 的范围时,Java 是否会垃圾收集字符串?

我对在互联网上阅读感到很困惑。有人说它不会被删除并使用 StringBuffer

// Demonstrate FileReader.

import java.io.*;
class FileReaderDemo {
public static void read(BufferedReader br) throws Exception {
long length = 0;
String s;
while (true) {
s = br.readLine();
s += "abcd";
if (s == null) {
break;
}
length += s.length();
//System.out.println(s);
}
System.out.println("Read: " + (length / 1024 / 1024) + " MB");
}

public static void main(String args[]) throws Exception {
//FileReader fr = new FileReader("FileReaderDemo.java");
FileReader fr = new FileReader("big_file.txt.1");
BufferedReader br = new BufferedReader(fr);
String s;
read(br);
fr = new FileReader("big_file.txt.1");
br = new BufferedReader(fr);
read(br);
fr = new FileReader("big_file.txt.1");
br = new BufferedReader(fr);
read(br);
fr = new FileReader("big_file.txt.1");
br = new BufferedReader(fr);
read(br);
BufferedReader in = new BufferedReader(new InputStreamReader(System. in )); in .readLine();
fr.close();
}
}

最佳答案

Hello, I am not java expert.

每个人都有可以学习的东西。

My code is reading a file into a String, This code gets executed every 5 minutes. Now Sometime file size of 100 lines sometimes 1000 lines.

听起来不是很大或很频繁。应该没有问题。

I am experience Out Of Memory, after some days.

您应该能够获得堆转储并查看内存不足的位置以及原因。

Question I have is, When my codes goes out of scope of the Reading file Function. Does Java Garbage collect the String .

当它不再通过强引用访问时,可以收集它。

I am pretty confuse by reading on internet some says it does not get deleted and use StringBuffer

听起来您来对地方了。没听说过。

关于Java 字符串内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072153/

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