JVM底层原理之堆内存初始大小
一、java1.8堆内存基本情況java1.8之後將最初的永久代取消了,由元空間取代。在java8中,永久代已經被移除,被元空間取代。元空间本质和永久代类似。元空间(java8)与永久代(java7)之间最大的区别在于:永久代使用的是JVM堆内存,但是java8以后的元空间并不在虚拟机中,而是使用本机物理内存。因此,默认情况下,元空间大小受本地内存限制。类的元数据放入na...
·
一、java1.8堆内存基本情況
java1.8之後將最初的永久代取消了,由元空間取代。
在java8中,永久代已經被移除,被元空間取代。元空间本质和永久代类似。
元空间(java8)与永久代(java7)之间最大的区别在于:
永久代使用的是JVM堆内存,但是java8以后的元空间并不在虚拟机中,而是使用本机物理内存。
因此,默认情况下,元空间大小受本地内存限制。类的元数据放入native memory,字符串池和类的静态变量放入java堆,这样可以加载多少类的元数据就不再由MaxPermSize控制,而是由系统实际可用空间决定。
二、堆内存初始大小
package com.lxk.jvm;
/**
* -Xms 堆内存初始大小,默认内存大小:系统64/1
* -Xmx 堆内存最大值,默认内存大小:系统4/1
* -Xmn 堆内存年轻代大小
*/
public class InitailHeapSizeDemo {
public static void main(String[] args) {
long initialHeapSize = Runtime.getRuntime().totalMemory();
long maxHeapSize = Runtime.getRuntime().maxMemory();
System.out.println("-Xms = " + initialHeapSize / 1024 + "kb or " + initialHeapSize / 1024 / 1024 + "mb");
System.out.println("-Xmx = " + maxHeapSize / 1024 + "kb or " + maxHeapSize / 1024 / 1024 + "mb");
}
}
程序执行结果如下:初始堆大小为系统内存64/1,堆内存最大为系统内存4/1。
测试结果:
-Xms = 247296kb or 241mb
-Xmx = 3655680kb or 3570mb
更多推荐
已为社区贡献15条内容
所有评论(0)