gpt4 book ai didi

java - Apache POI WorkbookFactory.create 导致 java.lang.OutOfMemoryError : Java heap space

转载 作者:行者123 更新时间:2023-12-02 09:03:08 25 4
gpt4 key购买 nike

我试图从 Vultr.com 在我的服务器上启动我的 .jar 文件,但每次启动它时都会出现错误。

    String excelFolder = Main.class.getProtectionDomain().getCodeSource().getLocation().getPath().replace("heroesBot.jar", "");
DataFormatter dataFormatter = new DataFormatter();


try(InputStream inputStream = new FileInputStream(excelFolder + "Summon.xlsx")) {


Workbook wb = WorkbookFactory.create(inputStream);
Sheet sheet = wb.getSheetAt(0);
wb.close();

我创建工作簿的行总是导致错误。我能做点什么吗?

文件大小为96KB

这是错误:

java.io.IOException: Java heap space
at org.apache.poi.ss.usermodel.WorkbookFactory.createWorkbook(WorkbookFactory.java:353)
at org.apache.poi.ss.usermodel.WorkbookFactory.createXSSFWorkbook(WorkbookFactory.java:316)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:234)
at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:200)
at heroes.Section.createKeys(Section.java:33)
at main.Main.main(Main.java:37)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.base/java.util.regex.Matcher.<init>(Matcher.java:248)
at java.base/java.util.regex.Pattern.matcher(Pattern.java:1133)
at org.apache.poi.ss.util.CellReference.separateRefParts(CellReference.java:396)
at org.apache.poi.ss.util.CellReference.<init>(CellReference.java:113)
at org.apache.poi.xssf.usermodel.XSSFCell.<init>(XSSFCell.java:119)
at org.apache.poi.xssf.usermodel.XSSFRow.<init>(XSSFRow.java:77)
at org.apache.poi.xssf.usermodel.XSSFSheet.initRows(XSSFSheet.java:268)
at org.apache.poi.xssf.usermodel.XSSFSheet.read(XSSFSheet.java:231)
at org.apache.poi.xssf.usermodel.XSSFSheet.onDocumentRead(XSSFSheet.java:218)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.parseSheet(XSSFWorkbook.java:448)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.onDocumentRead(XSSFWorkbook.java:413)
at org.apache.poi.ooxml.POIXMLDocument.load(POIXMLDocument.java:184)
at org.apache.poi.xssf.usermodel.XSSFWorkbook.<init>(XSSFWorkbook.java:282)
at org.apache.poi.xssf.usermodel.XSSFWorkbookFactory.createWorkbook(XSSFWorkbookFactory.java:88)

最佳答案

服务器有多少内存并不重要。重要的是,您为应用程序提供了多少内存(您允许应用程序使用多少内存)。尝试以下命令:

java -Xmx256M -jar your.jar

这意味着您允许应用程序使用 256 MB RAM。如果不够,请使用更大的值。

更新

根据堆栈跟踪,正则表达式的处理需要大量内存。 POI 广泛使用正则表达式,例如处理单元格引用。可能是您的 Excel 工作表包含带有单元格引用的公式,导致 POI 消耗大量内存来处理此正则表达式。检查 Excel 工作表中的公式。

关于java - Apache POI WorkbookFactory.create 导致 java.lang.OutOfMemoryError : Java heap space,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60021652/

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