簡體   English   中英

嘗試從結果集中填充列表約12000行,再次執行操作約4次,jvm溢出堆內存

[英]Trying to populate a list from resultset size is around 12000 rows on executing action again for about 4 times,jvm gets out of heap memory

我正在嘗試用大約12000條記錄填充數據庫類型為tableList的arraylist,然后使用struts迭代器標簽填充我的jsp頁面,但是在一次又一次執行此操作后,jvm內存不足,正如我看到的那樣每次我從頁面上調用此操作時,堆大小都會不斷減小。我認為,每次創建此操作類的新實例時,列表空間都不會釋放。建議解決此問題。我也在運行tableList.clear( ); 在類的構造函數中

int records=0;
        spl("BEFORE: "+run.freeMemory()+"-"+run.totalMemory()+"-"+run.maxMemory());//spl is for system.out.println and run is an object of Runtime class
        while(resultSet.next())
        {
            records++;
            if(!resultSet.getString("service_date").equals("N/A"))
            {
                serviceYear=resultSet.getString("service_date").split("-");
                regnNumber=officeCode+"/"+resultSet.getString("serviceid_requested")+"/"+resultSet.getString("country_code")+"/"+resultSet.getString("service_file_srno")+"/"+serviceYear[2];
            }
            else
            {
                regnNumber=officeCode+"/"+resultSet.getString("serviceid_requested")+"/"+resultSet.getString("country_code")+"/"+resultSet.getString("service_file_srno")+"/0000";
            }
            tableList.add(new MISTable(regnNumber,resultSet.getString("given_name"),resultSet.getString("surname"),
                                        resultSet.getString("nationality"),resultSet.getString("service_date"),resultSet.getString("service_expiry_date"),
                                        resultSet.getString("passport_number"),resultSet.getString("passport_expiry_date"),resultSet.getString("visa_number"),
                                        resultSet.getString("visa_expiry_date"),resultSet.getString("visa_type"),"")
                                        );
        }
        spl("AFTER: "+run.freeMemory()+"-"+run.totalMemory()+"-"+run.maxMemory());

您可以增加用於運行應用程序的Java內存參數。

-Xms256m -Xmx512m -XX:MaxPermSize=128m

您可以為Java設置最大內存...

使用分頁

您可以加載整個List並僅在該頁面中顯示一頁(比如說10條記錄)(更好的是使用緩存),或者(更好的是)僅加載您需要顯示的結果集的一部分,從而限制結果SQL。

加載12000條記錄並將其轉儲到頁面中是錯誤的 ,它會使服務器,客戶端以及通過誰想要讀取(或滾動)像建築物一樣的網頁的方式過載?

暫無
暫無

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

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