8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

java.lang.OutOfMemoryError:在 Spring Boot 中训练 OpenNLP 模型时出现 Java 堆空间错误

ItIsJustMe 2月前

40 0

我正在开发一个 Spring Boot 应用程序,该应用程序使用 Apache OpenNLP 从大型文本文件中训练句子检测器模型。但是,我遇到了 java.lang.OutOfMemoryError:Java 堆空间...

我正在开发一个 Spring Boot 应用程序,该应用程序使用 Apache OpenNLP 从大型文本文件中训练句子检测模型。但是,我 java.lang.OutOfMemoryError: Java heap space 在训练过程中遇到了错误。

这是我的代码的相关部分:

public void trainModel(String trainingFilePath, String modelFilePath, String language) throws IOException {
    try (InputStream trainingFileInputStream = new FileInputStream(trainingFilePath);
         BufferedInputStream bufferedInputStream = new BufferedInputStream(trainingFileInputStream);
         ObjectStream<String> lineStream =
                 new PlainTextByLineStream(new MarkableFileInputStreamFactory(new File(trainingFilePath)), StandardCharsets.UTF_8);
         ObjectStream<SentenceSample> sampleStream = new SentenceSampleStream(lineStream)) {

        SentenceDetectorFactory factory = new SentenceDetectorFactory(language, true, null, null);
        SentenceModel model = SentenceDetectorME.train(language, sampleStream, factory, TrainingParameters.defaultParams());

        try (OutputStream modelOut = new BufferedOutputStream(new FileOutputStream(modelFilePath))) {
            model.serialize(modelOut);
        }
    }
}

我尝试使用 -Xmx 选项增加 JVM 堆大小,但仍然在处理非常大的数据集时遇到错误。我想知道是否有更好的方法来处理这个问题,或者是否可以应用优化来减少内存使用量。

采取的步骤:

  • 使用 -Xmx2g 将 JVM 堆大小增加到 2GB。
  • 已验证正在处理的文件相当大,可能会导致内存问题。

我考虑使用内存分析工具来识别大量内存消耗者,但在继续之前我想先征求一下最佳方法的建议。

帖子版权声明 1、本帖标题:java.lang.OutOfMemoryError:在 Spring Boot 中训练 OpenNLP 模型时出现 Java 堆空间错误
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由ItIsJustMe在本站《rest》版块原创发布, 转载请注明出处!
最新回复 (0)
  • AKX 2月前 0 只看Ta
    引用 2

    你是如何确定 2GB 是正确的值?为什么不是 8GB 或 32GB?分享错误的完整异常消息和堆栈跟踪。文件大小是多少?你应该在错误发生时捕获堆转储(Java 可以自动生成一个)并分析它(

  • - 我的建议是:使用分析器。但请记住,它可能会告诉你,你实际上只需要一个更大的堆。

返回
作者最近主题: