被記憶體溢位苦苦折磨的小測試!!!

久曲健發表於2020-10-29

前言

一直在做批量測試工具的研發,所謂批量,那麼資料量不言而喻了。

什麼級別呢,目前本程式就個人測試而言,2199W資料暫時沒問題,一次性寫入大約九分鐘左右。

遇到的問題

都是因資料量大,讀或寫操作,遇到的瓶頸,一言不合就記憶體溢位,也就是常見的這個:java.lang.OutOfMemoryError: Java heap space。

經驗而言,肯定會修改IDEA執行引數,即電腦支援最大記憶體了,如:-Xms8092m -Xms8092m。

可能有的同學會說了,直接讓他在IDE上跑,設定執行jvm引數就好了呀。

試想,如果要給別人使用,肯定要脫離IDE,打包成可執行程式的,才更具易用性。

不能直接讓人家在IDE上跑吧,那還是工具嘛,o(╯□╰)o

嘗試過程

再來看打包工具jvm引數設定頁面,如下:

按照網上很多的說法就是,加大jvm記憶體設定即可,但將設定jvm引數加入打包中,還是第一次嘗試

這樣做的好處是什麼?

當執行這個jar包程式,就不需要指定執行引數了。

解決方案

1、-J-Xmx512m

參考“Allow VM。。。”那一行寫的,設定為 -J-Xmx512m至-J-Xmx8192m,一跑還是記憶體溢位,明顯這個方法無效,直接廢棄掉。

2、-XX:PermSize=512M -XX:MaxPermSize=1024M

參考MyEclipse中設定VM的方式,設定成-XX:PermSize=512M 至 -XX:MaxPermSize=8192M,再一跑,還是一樣記憶體溢位,一樣的,這個方法也廢棄掉。

3、新增配置檔案

  • 清空上圖中文字框中的資料,勾選“Allow VM ....”的核取方塊;
  • 假設打成的可執行程式名稱為run.exe,在它的同級目錄下新建檔案run.exe.vmoptions;
  • run.exe.vmoptions檔案的內容為:

-Xms4096m
-Xmx8192m

  • 重啟exe執行程式。

最後

再次執行打包程式,就正常了,且穩定奔放,沒有再報錯,問題解決。

相關文章