1
我有下載在德比基地如何減少堆使用的DataNucleus將+德比
問題從服務中的50K批次700K條目,並將它們存儲在Java桌面應用程序是,這隻有當我已設置-Xmx1024,否則應用程序崩潰並出現堆錯誤消息。雖然數據庫的最終大小約爲100M
能否請您提出一個方法來優化下面的代碼使用較少的內存
的代碼做的下載是非常喜歡這個
public static final void getItems() {
ItemsRequest req = new ItemsRequest();
Gson g = new Gson();
int next_index_to_read = 0;
int max_read_entry_count = 50000;
req.setLimit(max_read_entry_count);
ItemsResponse resp = null;
do{
resp = g.fromJson(postRequest(g.toJson(req)), ItemsResponse.class);
resp.saveItems();
next_index_to_read += max_read_entry_count;
req.setFrom(next_index_to_read);
}while(resp.getTotalItemsEntryCount()>next_index_to_read);
}
,並負責保存數據的代碼是
public class ItemsResponse
public void saveItems() {
PersistenceManagerFactory pmf = PMF.getPmf();
PersistenceManager pm = pmf.getPersistenceManager();
Transaction tx = pm.currentTransaction();
try {
tx.begin();
if (data != null) {
for (Item item : data) {
Item item = null;
try {
item = pm.getObjectById(Item.class, item.getItemId());
} catch (Exception e) {
continue;
}
pm.makePersistent(item);
}
}
tx.commit();
} catch (Exception e) {
Logger.getLogger("com.example").error("ItemResponse.saveData", e);
} finally {
if (tx.isActive()) {
tx.rollback();
}
}
pm.close();
}