java参数-xms_关于java -Xms参数的疑问

通过java -X看到java -Xms的解释

-Xms set initial Java heap size

但我测试发现,

虽然我的机器内存只有1G,但通过 java -Xms3G -Xmx3G appname可以成功启动应用,那么这个分配机制是怎么的呢?

就是指定了-Xms 3G,但机器内存只有1G的情况下,是怎样分配内存的?

注:

# free -m|grep Swap

Swap:            0          0          0

因为有操作系统的内存管理机制存在, 每个进程都会分配一个虚拟的地址空间(对应32位系统, 则是

4G

虚拟进程地址空间). 虚拟地址空间的有一部分内存地址映射到实际的物理内存中, 当进程所需要的内存大于实际的物理内存时, 则它的有一部分虚拟内存地址会映射到磁盘上. 由于这个机制的存在, 因此进程就好像可以使用到比实际物理内存还要大的内存空间.

对于你的问题, JVM 需要 3G 的内存空间, 而实际机器只有 1G, 因此操作系统会将 JVM 进程中暂时用不到的内存存入磁盘(即 Swap space), 当 JVM 需要使用到另外一部分内存时, 则通过内存交换(Memory Swap), 将磁盘中的数据写入内存. 因此如果频繁发生

Memory Swap

, 那么程序必然很慢.

还有虚拟内存可以用。

你把虚拟内存调小或者直接禁用就不行了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值