我仍然是一个相对较新的程序员,我在Java中遇到的一个问题是Out of Memory Errors.我不想使用-Xmx来增加内存,因为我觉得错误是由于编程不好造成的,我想改进编码而不是依靠更多的内存.
我所做的工作涉及处理大量文本文件,每个文本文件在压缩时大约为1GB.我在这里的代码是为了遍历一个新的压缩文本文件被删除的目录.它打开了第二个最新的文本文件(不是最新的,因为它仍然被写入),并使用Jsoup库来解析文本文件中的某些字段(字段用自定义分隔符分隔:“| nTa |”表示一个新列,“| nLa |”表示一个新行.
我觉得应该没有理由使用大量内存.我打开一个文件,扫描它,解析相关位,将解析后的版本写入另一个文件,关闭文件,然后移动到下一个文件.我不需要将整个文件存储在内存中,我当然不需要存储已经在内存中处理过的文件.
当我开始解析第二个文件时,我遇到错误,这表明我没有处理垃圾收集.请查看代码,看看你是否能发现我正在做的事情,这意味着我使用的内存比我应该的多.我想学习如何做到这一点,所以我不会出现内存错误!
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import org.jsoup.Jsoup;
public class ParseHTML {
public static int comme