java+-xmx4g,为什么xmx和top之间存在内存使用差异?

I set the xmx of jvm equals to 4 G, but after running for a time, when I use top to see the memory, it shows the process used 12 G memory.

So what the xmx actually mean? what should I do if I want to limit the jvm memory to 4 G ?

command line: -server -Xms4g -Xmx4g

And another related question :)

If the gc happens, will the space of the objects that not used any more in young generation be inevitably released by JVM ? or some of them left to the next gc ?

thanks

解决方案

The -Xmx option to the JVM specifies the maximum size of the Java

garbage collected heap. It does NOT limit the size of the memory used by the JVM. The size of the process reported by ps or top will

include that, plus any other memory used by the process. The following

are examples of things that are not part of the garbage collected heap

and yet are part of the memory required by the process:

Code to implement the JVM

The C manual heap for data structures implementing the JVM

Stacks for all of the threads in the system (app + JVM)

Cached Java bytecode (for libraries and the application)

JITed machine code (for libraries and the application)

Static variables of all loaded classes

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值