簡體   English   中英

將數據放入HashMap需要太多時間

[英]Puting data in HashMap is taking too much time

HashMap<String, Object> merchantDetailMap = new HashMap<String, Object>();      
            if(dataAndSize != null)
            {
                ResultList<VoltMerchantDetail>  tempMerchantList = (ResultList<VoltMerchantDetail>) dataAndSize.get("VoltDBDataList");
                vMerchantList = (List<VoltMerchantDetail>) tempMerchantList;
                for(VoltMerchantDetail vMerchant : vMerchantList){
                    HashMap<String, Object> merchantDetails = new HashMap<String, Object>();
                    merchantDetails.put("toActorMsisdn", vMerchant.getToActorMsisdn());
                    merchantDetails.put("fromActorMsisdn", vMerchant.getFromActorMsisdn());
                    merchantDetails.put("customCol1", vMerchant.getCustomCol1());
                    merchantDetails.put("customCol2", vMerchant.getCustomCol2());
                    merchantDetails.put("customCol3", vMerchant.getCustomCol3());
                    merchantDetails.put("customCol4", vMerchant.getCustomCol4());
                    merchantDetails.put("customCol5", vMerchant.getCustomCol5());               
                    merchantDetailMap.put(vMerchant.getMerUsername(),merchantDetails);
                }

鍵( vMerchant.getMerUsername() )的值就像= paPzG+jjzRss4s1frqGKrA==

問題是一段時間會花費太多時間(將元素放入其中需要10到15分鍾),甚至在放置期間會掛起。

可能是什么問題

我建議您使用Java事件探查器來查看所有時間。

對我來說,創建具有20個條目的20個哈希表並將它們添加到另一個哈希表中需要10到15分鍾,這是不現實的。 真正的問題更有可能是其他問題。 例如:

  • 創建resultList的查詢要花費很長時間,
  • resultList包含您認為更多的條目,或者
  • 堆幾乎已滿,並且GC在最后一次嘗試回收空間的過程中反復運行。

值得一提的是,如果用具有7個命名字段和7個getter和/或setter的簡單Java類替換用於表示商人詳細信息的HashMap ,則加載過程將更快,並且加載的地圖將占用更少的內存。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM