如何設置Java虛擬機內存以適應大程序的裝載


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(某個數值)(內存單位)  程序名稱

例如:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM