解决“exe4j打exe执行时内存溢出”问题

今天弄完了一个java项目,弄完后用exe4j打成了exe可执行程序,一运行,没反应了,石沉大海似的。而实际上,我这个项目是一定可以运行的呀(用MyEclipse跑了不知道多少遍),于是添加日志,跑完了打开一看,内存溢出,也就是常见的这个:java.lang.OutOfMemoryError: Java heap space。网上查资料说是直接修改VM的参数就成,也就是如图的文本框里的信息,像修改MyEclipse里面的VM一样加大内存量:

 

网上总共找到三种方法:

第一种:-J-Xmx512m

借鉴于“Allow VM。。。”那一行写的,设置为 -J-Xmx512m,一跑还是溢出,设置成1024还是不行,可见这么设置不行,PASS掉

 

第二种:-XX:PermSize=512M -XX:MaxPermSize=1024M

参考MyEclipse中设置VM的方式,设置成-XX:PermSize=512M -XX:MaxPermSize=1024M,再一跑,还是没戏,也pass。

 

第三种:添加文件。

a、删除上图中文本框中的数据,勾选“Allow VM ....”的复选框;

b、假设打成的可执行程序名称为a.exe,在它的同级目录下新建文件a.exe.vmoptions;

c、a.exe.vmoptions文件的内容为:

-Xms256m
-Xmx512m

d、重启exe执行程序。

这次正常了,没有再报错,问题解决

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
导出大量数据的候,如果一次性获取过多数据,很容易导致内存溢出。为了避免这种情况,可以考虑采用分页查询和分批写入Excel文件的方式。以下是一种常见的分页查询和分批写入Excel文件的方式: 1. 将数据按照分页大小进行分页,每次查询一页数据。 2. 使用POI等Java Excel操作库,将查询到的一页数据分批写入Excel文件中,每次写入一定数量的数据。 3. 循环执行步骤1和步骤2,直到所有数据都导出到Excel文件中。 下面是一个简单的代码示例: ``` // 设置分页大小和每次写入的数据量 int pageSize = 1000; int batchSize = 100; // 创建Excel文件和工作表 Workbook workbook = new XSSFWorkbook(); Sheet sheet = workbook.createSheet("Sheet1"); // 查询总记录数 int total = getDataTotal(); // 分页导出数据 for(int i = 0; i < total; i += pageSize) { // 查询一页数据 List<Data> dataList = getDataByPage(i, pageSize); // 将一页数据分批写入Excel文件中 for(int j = 0; j < dataList.size(); j += batchSize) { // 创建批次数据列表 List<Data> batchList = dataList.subList(j, Math.min(j + batchSize, dataList.size())); // 将批次数据写入Excel文件中 for(int k = 0; k < batchList.size(); k++) { Data data = batchList.get(k); Row row = sheet.createRow(i + j + k); row.createCell(0).setCellValue(data.getId()); row.createCell(1).setCellValue(data.getName()); row.createCell(2).setCellValue(data.getValue()); // ... } } } // 将Excel文件写入输出流 OutputStream outputStream = response.getOutputStream(); workbook.write(outputStream); outputStream.flush(); outputStream.close(); ``` 在上面的代码中,首先设置了分页大小为1000条数据和每次写入的数据量为100条数据,然后查询总记录数,接着循环执行分页查询数据并分批写入Excel文件中,最后将Excel文件写入输出流返回给前端。这样可以避免一次性获取数据过多导致内存溢出问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值