GradleWrapperMain及GradleDaemon进程内存占用量查询
Gradle 两类进程内存查询及核算方法
内存占用查询方法
直接执行以下命令即可过滤查看对应进程的实际物理内存占用(RSS字段单位为KB,除以1024即可转换为MB):
- 查看所有
GradleWrapperMain进程内存:
ps -eo pid,rss,cmd | grep GradleWrapperMain | grep -v grep
- 查看所有
GradleDaemon进程内存:
ps -eo pid,rss,cmd | grep GradleDaemon | grep -v grep
如果要查看指定PID的进程内存,替换<PID>为对应进程号即可:
ps -o pid,rss,cmd -p <PID>
两类进程的常规内存占用参考
- GradleWrapperMain:属于Gradle引导进程,本身逻辑轻量化,常规场景下内存占用在50MB~150MB区间,会随应用启动同步启动、应用停止同步退出。
- GradleDaemon:属于Gradle后台构建守护进程,默认JVM配置为最小堆64MB、最大堆1GB,实际占用和项目复杂度、依赖数量正相关:普通单模块SpringBoot项目空闲状态占用多在300MB~800MB区间,多模块大型项目最高可突破1GB。
注意:GradleDaemon默认支持同版本复用,单台服务器上部署多个使用相同Gradle版本的应用时,多个应用会共用同一个Daemon进程,无需单独核算每个应用的Daemon内存开销。如果需要自定义Daemon内存上限,可在项目根目录
gradle.properties文件中添加配置:# 自定义Daemon JVM参数,可根据需求调整堆大小方便核算 org.gradle.jvmargs=-Xmx512m -Xms256m # Daemon空闲1小时后自动销毁 org.gradle.daemon.idletimeout=3600000
单应用总内存核算注意事项
使用./gradlew bootRun启动应用时,总内存消耗为三部分之和:GradleWrapperMain占用 + GradleDaemon占用 + 业务SpringBoot应用进程占用。
如果是生产环境多应用部署场景,更推荐先执行./gradlew bootJar构建出独立可执行jar包,再用java -jar命令启动应用,该方式不会产生Gradle两类进程的额外内存开销,仅需核算业务应用本身的内存即可,资源利用率更高。
内容的提问来源于stack exchange,提问作者Rpj
相关产品推荐
相关产品推荐

