性能问答>-Xms设置的最小堆内存是Java程序运行时JVM向系统申请的内存吗?>
1回复
1年前

-Xms设置的最小堆内存是Java程序运行时JVM向系统申请的内存吗?



我把最小堆内存设置成1G,运行一个较小的程序,在系统的任务管理器中看到程序只占用了300多m。JVM不是在Java程序运行时一次性申请-Xms设置的大小的吗?如果是程序需要用到那么大的内存是才申请,那-Xms这个设置还有什么意义,就直接只设置最大堆内存不就好了吗?

2826 阅读
请先登录,再评论

注意区别申请的大小和实际占用的大小。
-Xms 表示启动时要向OS申请的大小,相当于是提前锁定,OS会为JVM分配虚拟地址空间,但该空间并未mapping到真是物理内存地址,只有在使用时产生一个缺页中断,才会生成真正的物理地址mapping。
你看到的300m是JVM实际使用的,只有这部分内存才会真正的分配物理内存地址空间。

1年前