Java虛擬機對於運行時的程序所占內存是有限制的,當我們的項目或者程序很大時,往往會照成內存溢出。
舉個例子:
public class SmallTest1 { public static void main(String[] args) { byte[] array = new byte[1024*1024*500]; } }
當定義這樣一個500MB的數組時,就會造成JVM內存溢出:
而Java虛擬機默認的程序運行能得到的內存大小是隨系統的,由Java的api體系結構中,點擊Java:
后找到 “-Xmxn”這一項:
所以默認大小是根據系統設置的,那么我們該怎么設置最大運行內存呢?
如果是使用eclipse,那么在要進行的項目或者程序右鍵,選擇【Run As】--->【Run Configurations...】,選擇【(x)= Arguments】,在【VM arguments】中增加設置內存大小:
得到如下並設置參數:
這里我設置了800MB的內存,足夠剛才的程序運行,接下來我們再來試試程序是否真的能運行而不再內存溢出:
public class SmallTest1 { public static void main(String[] args) { byte[] array = new byte[1024*1024*500]; System.out.println("運行成功!"); } }
============================================================
可以看到程序不再使Java虛擬機內存溢出,我們通過線程睡眠方式來再次驗證下:
public class SmallTest1 { public static void main(String[] args) throws InterruptedException { byte[] array = new byte[1024*1024*500]; System.out.println("運行成功!"); Thread.sleep(5000); //設置程序運行5秒,查看內存變化 } }
未運行程序之前的系統內存:
運行程序之后的系統內存:
===========================================
如果是通過dos命令,則在cmd窗口中鍵入 java -Xmx(某個數值)(內存單位) 程序名稱
例如: