1. 程式人生 > >被記憶體溢位苦苦折磨的小測試!!!

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

### 前言 一直在做批量測試工具的研發,所謂批量,那麼資料量不言而喻了。 什麼級別呢,目前本程式就個人測試而言,2199W資料暫時沒問題,一次性寫入大約九分鐘左右。 ### 遇到的問題 都是因資料量大,讀或寫操作,遇到的瓶頸,一言不合就記憶體溢位,也就是常見的這個:java.lang.OutOfMemoryError: Java heap space。 經驗而言,肯定會修改IDEA執行引數,即電腦支援最大記憶體了,如:-Xms8092m -Xms8092m。 可能有的同學會說了,直接讓他在IDE上跑,設定執行jvm引數就好了呀。 試想,如果要給別人使用,肯定要脫離IDE,打包成可執行程式的,才更具易用性。 不能直接讓人家在IDE上跑吧,那還是工具嘛,o(╯□╰)o ### 嘗試過程 再來看打包工具jvm引數設定頁面,如下: ![](https://img2020.cnblogs.com/blog/718867/202010/718867-20201029195724531-1990167804.png) 按照網上很多的說法就是,加大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執行程式。 ### 最後 再次執行打包程式,就正常了,且穩定奔放,沒有再報錯,問題