Java垃圾收集器的行为是否会随着时间的推移而发生变化或受到JIT的影响?

 UU常璐图_302 发布于 2023-02-06 02:53

我们在Intranet上运行了一个生产Web应用程序:

每天在0300重新启动,以执行其数据库的备份

在整个工作日(0800至1700)有相同的负荷

正在Java HotSpot(TM)64位服务器VM版本20.45-b01上运行

正在运行Linux 2.6.18-128.el5的16核和32 GB RAM的物理机器上运行

不与任何其他重要过程共享机器

配置有:

-Xms2g
-XX:PermSize=256m
-Xmx4g
-XX:MaxPermSize=256m
-Xss192k
-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:CMSInitiatingOccupancyFraction=50
-XX:+DisableExplicitGC

每天堆使用情况:

从创业到0800逐渐上升到90%

在0930之前保持在90%

从0930到1415,保持在70%

在1415跌至50%

1445年跌至37%

此时堆在大约40分钟内上升到55%,并且无限制地回收到37%,直到下一次重新启动.

我们在JVM上安装了AppDynamics,可以看到主要垃圾收集大致每分钟发生一次,对内存没有太大影响(当然除了上面描述的下降),直到内存达到37%,而主要收集变得更少频繁.

Web应用程序的行为显然有数百个因素,但研究的一个途径是当JVM停止时Hotspot JIT信息明显丢失.

是否有关于JVM关闭的GC优化/等等?JVM是否实际上消耗了比它需要更多的内存,因为某些Hotspot优化还没有发生?

如果没有重新启动JVM并且我们找到了另一种执行数据库备份的方法,那么我们是否有可能从这个应用程序获得更好的内存性能?

(重申一下,我知道有十万件事可能影响应用程序的行为,尤其是一个几乎没有人知道的应用程序!我真的只想知道是否有某些与内存性能有关的事情.一个在停止时丢失的JVM)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有