由于 Java 字节码是运行在 JVM 虚拟机上的,同样的字节码使用不同的 JVM 虚拟机参数运行,其性能表现可能各不一样。为了能使系统性能最优,就需要选择使用合适的 JVM 参数运行 Java 应用程序。
JVM 内存结构分配对 Java 应用程序的性能有较大的影响。
Java 应用程序可以使用的最大堆可以用-Xmx 参数指定。最大堆指的是新生代和老生代的大小之和的最大值,它是 Java 应用程序的堆上限。清单 9 所示代码是在堆上分配空间直到内存溢出。-Xmx 参数的大小不同,将直接决定程序能够走过几个循环,本例配置为-Xmx5M,设置最大堆上限为 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. 运行输出
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 )
|
此时表明在完成 4MB 数据分配后系统空闲的堆内存大小已经不足 1MB 了。
2015职称计算机考试书PowerPoint2007中 .. 定价:¥45 优惠价:¥42 更多书籍 | |
2015年全国职称计算机考试教材(2007模 .. 定价:¥225 优惠价:¥213 更多书籍 |