由于 Java 字節(jié)碼是運(yùn)行在 JVM 虛擬機(jī)上的,同樣的字節(jié)碼使用不同的 JVM 虛擬機(jī)參數(shù)運(yùn)行,其性能表現(xiàn)可能各不一樣。為了能使系統(tǒng)性能最優(yōu),就需要選擇使用合適的 JVM 參數(shù)運(yùn)行 Java 應(yīng)用程序。
JVM 內(nèi)存結(jié)構(gòu)分配對(duì) Java 應(yīng)用程序的性能有較大的影響。
Java 應(yīng)用程序可以使用的最大堆可以用-Xmx 參數(shù)指定。最大堆指的是新生代和老生代的大小之和的最大值,它是 Java 應(yīng)用程序的堆上限。清單 9 所示代碼是在堆上分配空間直到內(nèi)存溢出。-Xmx 參數(shù)的大小不同,將直接決定程序能夠走過(guò)幾個(gè)循環(huán),本例配置為-Xmx5M,設(shè)置最大堆上限為 5MB。
清單 9 .Java 堆分配空間
import java.util.Vector;
public class maxHeapTest {
public static void main(String[] args){
Vector v = new Vector();
for ( int i= 0 ;i<= 10 ;i++){
byte [] b = new byte [ 1024 * 1024 ];
v.add(b);
System.out.println(i+ "M is allocated" );
}
System.out.println( "Max memory:" +Runtime.getRuntime().maxMemory());
}
}
|
清單 10. 運(yùn)行輸出
0M is allocated
1M is allocated
2M is allocated
3M is allocated
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at maxHeapTest.main(maxHeapTest.java: 8 )
|
此時(shí)表明在完成 4MB 數(shù)據(jù)分配后系統(tǒng)空閑的堆內(nèi)存大小已經(jīng)不足 1MB 了。
2015職稱計(jì)算機(jī)考試書(shū)PowerPoint2007中 .. 定價(jià):¥45 優(yōu)惠價(jià):¥42 更多書(shū)籍 | |
2015年全國(guó)職稱計(jì)算機(jī)考試教材(2007模 .. 定價(jià):¥225 優(yōu)惠價(jià):¥213 更多書(shū)籍 |