專案中的報表一執行就報記憶體溢位(birt報表),是哪裡配置錯了?使用者33377541533221032019-11-15 14:56:59

birt沒用過,一直用的都是finereport,覺得挺好用的,你可以試試,類似的問題在finereport中是這樣解決的:當從資料庫中查詢大量的資料,每個模板取出來幾百萬條資料,或者是頻繁的重新整理專案、模板時就會佔用Java虛擬機器JVM的大量記憶體,超過記憶體就會出現報java。lang。OutOfMemoryError:Java heap space記憶體一處的錯誤,具體報錯如下:2。 原因由於伺服器的JVM不夠用而丟擲的錯誤,JVM在啟動的時候會自動設定Heap size的值,初始空間(即-Xms)是物理記憶體的1/64,最大空間(-Xmx)是物理記憶體的1/4。所以可以根據自己的情況進行修改JVM的-Xmn -Xms -Xmx等選項。2。1 記憶體大小設定當Heap Size設定偏小,除了報異常資訊外,還會發現執行報表的速度變慢了。Heap Size最大不要超過可用物理記憶體的80%,一般的要將-Xms和-Xmx選項設定為相同,而-Xmn為1/4的-Xmx值。Heap size的 -Xms -Xmn 設定不要超出物理記憶體的大小。否則會提示“Error occurred during initialization of VM Could not reserve enough space for object heap”3。 解決方案3。1 調大伺服器的記憶體下面我們以tomcat為例,來檢視下如何修改記憶體大小。修改伺服器的記憶體溢位在TOMCAT_HOME\bin\catalina。bat 中添如下程式碼: set JAVA_OPTS= -Xmx1024M -Xms512M -XX:MaxPermSize=256m 或者在開始程式 tomcat目錄下面的Configure Tomat開啟選擇Java設定記憶體大小其他伺服器的記憶體修改可以參考伺服器記憶體修改文件。3。2 啟用磁碟快取我們預設使用的是記憶體快取,就是取出的資料全部放在伺服器記憶體中,此時若資料量大的情況下就很可能會導致記憶體不夠用,改為磁碟快取,就是將取出的資料部分放在記憶體中,部分放在磁碟中,這樣可以減少伺服器記憶體佔用,但是從磁碟中讀取資料會造成取數效率下降,增長時間的。具體的操作可檢視資料集快取與共享的快取至磁碟小節。