1.什么时候会触发fullGC?fullGC频繁可能的原因是什么?

当metaSpace超过MaxMataSpaceSize设置值时会触发FullGC,默认是无穷大;

存在类、类加载器导致的内存泄漏或大小不合适

2.metaSpace的组成?

Klass MetaSpace:

用来存klass的(class文件在jvm中运行时的数据结构);

一个紧接着Heap的连续的存储空间;

这块内存大小可通过-XX:CompressedClassSpaceSize参数来控制,这个参数默认是1G,但是这块内存也可以没有,假如没有开启压缩指针就不会有这块内存,这时候Klass信息存在NoKlass Metaspace中。

NoKlass MetaSpace:

专门来存klass相关的其他的内容,比如method,constantPool等;

这块内存是由多块内存组合起来的,所以可以认为是不连续的内存块组成的;

NoKlass Mestaspace是由一块块内存慢慢组合起来的,在没有达到限制条件的情况下,会不断加长这条链,让它可以持续工作。

3.java8中永久代被元数据区取代,有什么好处?

1)把永久代从jvm虚拟机中移除,metaSpace放置于内存中,既节省了JVM的内存空间,又避免了永久代大小设置不合理带来的困扰。

2)解决永久代的OOM问题。内存空间一般来说是足够大的,当meatSpace超级大的时候,就被操作系统杀死了。(如果Klass Metaspace用完了,那就会OOM了,不过一般情况下不会)

3)

4.元空间的问题?

元空间虚拟机采用了组块分配的形式,同时区块的大小由类加载器类型决定。类信息并不是固定大小,因此有可能分配的空闲区块和类需要的区块大小不同,这种情况下可能导致碎片存在。元空间虚拟机目前并不支持压缩操作,所以碎片化是目前最大的问题。

5.元空间的优化?

-XX:MaxMetaspaceSize:默认是无穷大;功能就是为metaSpace设置一个最大阈值,当metaSpace的内存超过这个值的时候会触发FullGC;

(我觉得这个内存说的是Klass和NoKlass的总和?为什么元空间的初始大小是21M?这里说的元空间是Klass+NoKlass么? 下面那个-->" -XX:CompressedClassSpaceSize:默认是1G;" 这里给的默认值应该是Klass空间的默认值吧,怎么比元空间的还大?)

-XX:CompressedClassSpaceSize:默认是1G;这个参数主要是设置Klass Metaspace的大小,不过这个参数设置了也不一定起作用,前提是能开启压缩指针,假如-Xmx超过了32G,压缩指针是开启不来的。

6.什么时候类加载器会被回收?类加载器在metaSpace中么?

原文:https://www.cnblogs.com/eryun/p/12006338.html

JAVA默认永久代大小_jvm——metaspace代替永久代相关推荐

  1. java 64位 默认分配内存大小_JVM默认内存大小

    堆(Heap)和非堆(Non-heap)内存 按照官方的说法:"Java虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在Java虚拟机启动时创建的." ...

  2. java fileitem 识别图片大小_Java FileItem.getSize方法代碼示例

    本文整理匯總了Java中org.apache.commons.fileupload.FileItem.getSize方法的典型用法代碼示例.如果您正苦於以下問題:Java FileItem.getSi ...

  3. 永久代内存java_Java8内存模型—永久代(PermGen)和元空间(Metaspace)

    一.JVM 内存模型 根据 JVM 规范,JVM 内存共分为虚拟机栈.堆.方法区.程序计数器.本地方法栈五个部分. 1.虚拟机栈:每个线程有一个私有的栈,随着线程的创建而创建.栈里面存着的是一种叫&q ...

  4. JVM原理系列--元空间(MetaSpace)与永久代(PermGen)的区别

    原文网址:JVM原理系列--元空间(MetaSpace)与永久代(PermGen)的区别_IT利刃出鞘的博客-CSDN博客 简介 说明 本文介绍JVM中元空间(MetaSpace)与永久代(PermG ...

  5. Java中的新生代、老年代和永久代

    1.为什么会有年轻代 我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能.你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我 ...

  6. bat java 指定堆大小_jvm 堆内存 栈内存 大小设置 查看堆大小

    1.在eclipse设置JVM参数 打开eclipse-窗口-首选项-Java-已安装的JRE(对在当前开发环境中运行的java程序皆生效,也就是在eclipse中运行的java程序)编辑当前使用的J ...

  7. 012、JVM实战总结:案例实战:每日百万交易的支付系统,JVM栈内存与永久代大小又该如何设置?

    更详细内容请扫描上方的二维码 1.前文回顾 如何根据对未来预估的业务量和访问量去推算每秒的并发量.内存空间占用等,进而推算出内存运转模型,然后选择合理的机器配置,配置合理的内存大小 2.基于案例,说说 ...

  8. java永久区_Java方法区和永久代

    目前有三大Java虚拟机:HotSpot,oracle JRockit,IBM J9. JRockit是oracle发明的,用于其WebLogic服务器,IBM JVM是IBM发明的用于其Websph ...

  9. java年轻代和年老代默认比值_JAVA中的GC以及年轻代,年老代,持久代的认识

    java中我们常常谈论到垃圾回收机制,那么,垃圾回收机制又是什么呢?说到JVM调优,似乎很高大上,那么JVM调的都是那些数据呢?伊甸园区,幸存区,年轻代,年老代,持久代,每个词都熟悉又陌生,似乎很深奥 ...

最新文章

  1. HIVE QL 杂记
  2. 2021-07-30 自己垃圾场景数据集训练Bisenet网络
  3. 自定义Dialog(图片,文字说明,单选按钮)----类ListPreference实现(2)
  4. dialog能提交数据吗_你的数据库,能撑起多少并发,有数吗?
  5. 四、构建Node Web程序
  6. c++中string插入一个字符_Java内存管理-探索Java中字符串String(十二)
  7. 2019年北京高校毕业生就业质量状况:四成博士去了高校
  8. Python ln_虚拟机中单机Spark (Python版)安装
  9. 美团员工被指用钓鱼邮件获拼多多薪资;华为回应暂无其它手机厂商接入HarmonyOS;GCC 放弃版权转让政策...
  10. ue4联网和多人游戏总结(第二部分)
  11. 常见404与500错误及含义
  12. ROS2安装时出现Connection failed [IP: 91.189.91.39 80]
  13. 数学模型——基于差分方程的减肥模型(基于python)
  14. Android Studio掷骰子生成随机数(Java)
  15. php 没有读取权限能不能复制,“需要提供管理员权限才能复制此文件夹”怎么办...
  16. 【HTML】html基本标签-1(文字,列表,图片标签)
  17. MYSQL 命令中常出现的error - 1046 1064 1264
  18. Raft算法实现 - Sofa-JRaft,选主,数据写入,日志复制
  19. 相对论【1】洛伦兹变换
  20. 毫米波雷达 ti awr2243 天线通道校准方法

热门文章

  1. C语言编程 5.7 从键盘中输入一个英文字母,如果它是大写则转化为小写。如果它是小写则转化为大写,并将其ASCll码显示到屏幕上。
  2. Google Hacking 搜索引擎攻击与防范
  3. MOOS-ivp之第一个MOOSApp:向MOOSDB发布数据
  4. 3060ti配什么cpu和主板
  5. 雅思口语怎么备考?哪里有免费的题库?
  6. 2023全新纯净版本知识付费微信小程序源码_附搭建教程_亲测可用
  7. c语言windows画五角星,C/C++画一个巨型五角星
  8. 云止水中,但是风却不能停泊在海上
  9. redis为什么采用跳表而不是红黑树详解
  10. springboot 使用mybatis-plus 配置乐观锁。