XX:MaxMetaspaceSize 的用处
2021/12/11 12:46:58
本文主要是介绍XX:MaxMetaspaceSize 的用处,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
JVM参数 -XX:MaxMetaspaceSize的含义
- 问题描述
- 一、现象
- 二、分析
- 1.查看Metaspace
- 2.解决问题
- 总结
问题描述
在工作过程中,遇到一个问题:SpringBoot 打包的可执行jar ,在重启或者发布的时候,会有多次的full GC。
一、现象
{Heap before GC invocations=4 (full 1): PSYoungGen total 76288K, used 6533K [0x00000000fab00000, 0x0000000100000000, 0x0000000100000000) eden space 65536K, 0% used [0x00000000fab00000,0x00000000fab00000,0x00000000feb00000) from space 10752K, 60% used [0x00000000feb00000,0x00000000ff161468,0x00000000ff580000) to space 10752K, 0% used [0x00000000ff580000,0x00000000ff580000,0x0000000100000000) ParOldGen total 175104K, used 96K [0x00000000f0000000, 0x00000000fab00000, 0x00000000fab00000) object space 175104K, 0% used [0x00000000f0000000,0x00000000f0018010,0x00000000fab00000) Metaspace used 20379K, capacity 21094K, committed 21248K, reserved 1067008K class space used 2536K, capacity 2717K, committed 2816K, reserved 1048576K 2021-12-11T11:09:36.605+0800: 1.422: [Full GC (Metadata GC Threshold) [PSYoungGen: 6533K->0K(76288K)] [ParOldGen: 96K->6422K(175104K)] 6629K->6422K(251392K), [Metaspace: 20379K->20379K(1067008K)], 0.0299851 secs] [Times: user=0.13 sys=0.01, real=0.03 secs]
二、分析
通过现象中的 [Metaspace: 20379K->20379K(1067008K)] 得出,full gc之后,Metaspace区没有释放空间, 且old区离最大配置还很远,所以怀疑是Metaspace区不够用了。
1.查看Metaspace
root@ps:/opt# java -XX:+PrintFlagsInitial # 需要配置环境变量 通过认证查找之后,可以算出 -XX:Metaspacesize为21720669B(大约20M) 查资料得出 ,在默认情况下,这个值大小根据不同的平台在12M到21M浮动
2.解决问题
既然知道是因为Metaspacesize空间不足引起的,故而我们在容器启动的时候设定Metaspacesize的值即可
总结
这就是为什么我们看到成熟项目的启动脚本里默认有Metaspacesize的原因。
这篇关于XX:MaxMetaspaceSize 的用处的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25TypeScript基础知识详解
- 2024-12-25安卓NDK 是什么?-icode9专业技术文章分享
- 2024-12-25caddy 可以定义日志到 文件吗?-icode9专业技术文章分享
- 2024-12-25wordfence如何设置密码规则?-icode9专业技术文章分享
- 2024-12-25有哪些方法可以实现 DLL 文件路径的管理?-icode9专业技术文章分享
- 2024-12-25错误信息 "At least one element in the source array could not be cast down to the destination array-icode9专业技术文章分享
- 2024-12-25'flutter' 不是内部或外部命令,也不是可运行的程序 或批处理文件。错误信息提示什么意思?-icode9专业技术文章分享
- 2024-12-25flutter项目 as提示Cannot resolve symbol 'embedding'提示什么意思?-icode9专业技术文章分享
- 2024-12-24怎么切换 Git 项目的远程仓库地址?-icode9专业技术文章分享
- 2024-12-24怎么更改 Git 远程仓库的名称?-icode9专业技术文章分享