小编Muh*_*diq的帖子

使用Apache.POI读写Excel的Java内存问题

我正在尝试读取 excel 文件...进行一些更改...保存到新文件。

我用按钮创建了小表单......按下按钮时......

  • 它将加载 Excel 文件并将所有数据加载到我创建的类的数组列表中。
  • 它将遍历数组列表并更改对象中的一些属性。
  • 它将数据保存到新的 Excel 文件中。
  • 最后,它将清除阵列列表并显示完成的消息框。

现在的问题是内存问题。
加载表单后,我可以在 Windows 任务管理器中看到...javaw 使用了大约 23MB。
在读写 excel 期间……内存高达 170MB。
阵列列表被清除后....内存没有清除并保持在 150MB 左右。

以下代码附加到事件以单击按钮。

MouseListener mouseListener = new MouseAdapter() {
        public void mouseReleased(MouseEvent mouseEvent) {
            if (SwingUtilities.isLeftMouseButton(mouseEvent)) {
                ArrayList<Address> addresses = ExcelFunctions.getExcelData(fn);
                for (Address address : addresses){
                    address.setZestimate(Integer.toString(rnd.nextInt(45000)));
                    address.setRedfinestimate(Integer.toString(rnd.nextInt(45000)));
                }
                ExcelFunctions.saveToExcel(ofn,addresses);
                addresses.clear();
                JOptionPane.showMessageDialog(null, "Done");
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)


此类中读取/Excel 文件的代码。

public class ExcelFunctions {
public static ArrayList<Address> getExcelData(String fn)
{
    ArrayList<Address> output = new ArrayList<Address>();
    try
    {
        FileInputStream file …
Run Code Online (Sandbox Code Playgroud)

java memory-leaks apache-poi xssf

2
推荐指数
1
解决办法
5550
查看次数

标签 统计

apache-poi ×1

java ×1

memory-leaks ×1

xssf ×1