四千岁爷 2021-10-16 15:39 采纳率: 66.7%
浏览 11
已结题

MinMetaspaceExpansion和MaxMetaspaceExpansion这俩个参数到底是什么意思?

今天在看你假ben 大shen的文章:

里面有一段内容我理解不动。就是下面这部分内容

MinMetaspaceExpansion
MinMetaspaceExpansion和MaxMetaspaceExpansion这两个参数或许和大家认识的并不一样,也许很多人会认为这两个参数不就是内存不够的时候,然后扩容的最小大小吗?其实不然这两个参数和扩容其实并没有直接的关系,也就是并不是为了增大committed的内存,而是为了增大触发metaspace GC的阈值。
这两个参数主要是在比较特殊的场景下 jiu ji(⑨急) 使用,比如gcLocker或者should_concurrent_collect的一些场景,因为这些场景下接下来会做一次GC,相信在接下来的GC中可能会释放一些metaspace的内存,于是先临时扩大下metaspace触发GC的阈值,而有些内存分配失败其实正好是因为这个阈值触顶导致的,于是可以通过增大阈值暂时绕过去。
默认332.8K,增大触发metaspace GC阈值的最小要求。假如我们要jiu ji(⑨急)分配的内存很小,没有达到MinMetaspaceExpansion,但是我们会将这次触发metaspace GC的阈值提升MinMetaspaceExpansion,之所以要大于这次要分配的内存大小主要是为了防止别的线程也有类似的请求而频繁触发相关的操作,不过如果要分配的内存超过了MaxMetaspaceExpansion,那MinMetaspaceExpansion将会是要分配的内存大小基础上的一个增量。
MaxMetaspaceExpansion
默认5.2M,增大触发metaspace GC阈值的最大要求。假如说我们要分配的内存超过了MinMetaspaceExpansion但是低于MaxMetaspaceExpansion,那增量是MaxMetaspaceExpansion,如果超过了MaxMetaspaceExpansion,那增量是MinMetaspaceExpansion加上要分配的内存大小。
注:每次分配只会给对应的线程一次扩展触发metaspace GC阈值的机会,如果扩展了,但是还不能分配,那就只能等着做GC了。

img

MinMetaspaceExpansion和MaxMetaspaceExpansion这俩个参数的作用到底是什么?谁能举个例子来解释一下?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    问题事件

    • 系统已结题 10月24日
    • 创建了问题 10月16日

    悬赏问题

    • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
    • ¥15 Linux权限管理相关操作(求解答)
    • ¥15 Bug traq 数据包 大概什么价
    • ¥15 在anaconda上pytorch和paddle paddle下载报错
    • ¥25 自动填写QQ腾讯文档收集表
    • ¥15 DbVisualizer Pro 12.0.7 sql commander光标错位 显示位置与实际不符
    • ¥15 求一份STM32F10X的I2S外设库
    • ¥15 android 打包报错
    • ¥15 关于stm32的问题
    • ¥15 ncode振动疲劳分析中,noisefloor如何影响PSD函数?