有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不支持列表。删除()或列表。removeAll()释放内存使用率?

我在一个XML中处理20GB的数据,我使用SpringBatch来实现这一点

我用Jaxb2Marshaller映射了我的XML。 这是我的JAXB:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "BILLSClass", propOrder = {
    "bill"
})
@XmlRootElement(name="BILLS", namespace = "http://www.amdocs.com/amdd/stp/GBF")
public class BILLSClass {

    @XmlElement(name = "BILL")
    protected List<BILLClass> bill;

    public List<BILLClass> getBILL() {
        if (bill == null) {
            bill = new ArrayList<BILLClass>();
        }
        return this.bill;
    }
}

这个法案里面有很多东西。大约每个账单都有近1GB的数据

我用这种方式处理这个巨大的XML

public void processXML(BILLSClass billsClass){

    Iterator<BILLClass> iterator = billsClass.getBILL().iterator();

    while (iterator.hasNext()) {
        BILLClass bill = iterator.next();
        processBill(bill);
        billsClass.getBILL().remove(bill);
    }

}

请注意,在while中调用processBill(bill)之后,我从billClass中删除了刚刚处理的bill对象

我想知道billsClass.getBILL().remove(bill)是否会减少进程中的内存使用,或者我是否需要做一些其他事情来减少内存消耗


共 (0) 个答案