第 6章 openJ9的性能:减低空闲时的内存消耗

     在这个云计算时代,云服务提供商使用不同的定价模式。 基于消耗的定价模型会对资源使用情况收取费用,这通常包括内存量,CPU周期,磁盘空间,网络流量等。 如果能在程序运行的空闲时,能降低资源的消耗,就能降低成本的支出。

     而JVM在运行时,会自己申请一块内存区域,这块区域被称作是堆,由JVM自身来管理,当应用程序运行一段时间后,Java堆将被垃圾对象所填充, 然后被回收,而当应用程序变为空闲状态时,由于没有空间请求,JVM不会费心收集垃圾。 所以,应用程序最终会产生一个庞大的堆,即使在闲置期间也会保持内存占用率过高,导致不必要的成本支出。

     为了解决这样的问题,在openJ9中有一个-XX:+ IdleTuningGcOnIdle选项来启用空闲调整功能,其内部计数器来判断应用程序是否进入空闲周期时,当识别为进入了空闲周期,就会将占用的内存释放会操作系统。

  从上图中可以看到 ,Java堆的内存量在空闲期间不会下降,这不是错误,因为OpenJ9不会调整堆大小,它只会解除堆页并将内存返回给操作系统。 因此,JVM报告的堆用量不会改变,改变的只是进程的内存占用

使用这个参数时,需要注意一下几点:

1) -XX:+ IdleTuningGcOnIdle只能在Linux x86-64位平台上使用

2)只用配合gencon GC策略使用,这是默认的GC策略。

3)应用程序必须闲置一段时候后,才能触发进程内存的回收,这个时间可以通过-XX:IdleTuningMinIdleWaitTime来调整

你可能感兴趣的:(第 6章 openJ9的性能:减低空闲时的内存消耗)