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) 个答案