https://mp.weixin.qq.com/s?__biz=MzIzNjI1ODc2OA==&mid=2650886860&idx=1&sn=f8bc6ab03d7a07022c86bf726209b17c&chksm=f32f6673c458ef657358068a8aea4664d3cbc8a488e6bfd6445c0743140f6fc8bcf9649298b7&scene=21#wechat_redirect

http://www.cnblogs.com/duanxz/p/3520829.html

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中么?

jvm——metaspace代替永久代的更多相关文章

  1. JVM —— 移除永久代

    近期准备生产环境 JDK 升级到 1.8,本地先升级了下,发现 -XX:PermSize 和 -XX:MaxPermSize 已经失效,取而代之的是一个新的区域 -- Metaspace(元数据区). ...

  2. JVM 知识点补充——永久代和元空间

    之前已经讲过了不少有关 JVM 的内容,今天准备将之前没有细讲的部分进行补充,比如:永久代和元空间. 永久代 Java 的内存中有一块称之为方法区的部分,在 JDK8 之前, Hotspot 虚拟机中 ...

  3. JVM年轻代,老年代,永久代详解

    前言 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.本篇文章主要讲解内存区域的年轻代,老年代和永久代,略微提及一些垃圾回收算法,下面是正文. 堆整体 堆主 ...

  4. (适合入门)JVM堆内存相关的启动参数:年轻一代、岁和永久代内存分配

    假设你要观察JVM进程消耗的堆内存,通过命令工具jmap或可视化工具jvisualvm.exe.JVM这些参数的默认启动值.假设你想知道JVM内存分配策略,最开始手动设置这些参数.通过JDK统计结果, ...

  5. 性能测试三十四:jvm内存结构(栈、堆、永久代)

    Java内存管理机制 Java采用了自动管理内存的方式Java程序是运行在Jvm之中的Java的跨平台的基于Jvm的跨平台特性内存的分配和对象的创建是在Jvm中用户可以通过一系列参数来配置Jvm Jv ...

  6. JVM堆内存相关的启动参数:年轻代、老年代和永久代的内存分配

    如果想观察JVM进程占用的堆内存,可以通过命令工具jmap或者可视化工具jvisualvm.exe.JVM这些启动参数都拥有默认值,如果想了解JVM的内存分配策略,最好手动设置这些启动参数.再通过JD ...

  7. JVM深入:JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)(转)

    转载自:https://www.cnblogs.com/yulei126/p/6777323.html 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4. ...

  8. JVM虚拟机21: 1.8中废弃永久代(PermGen)迎来元空间(Metaspace)

    1.JDK8永久代的废弃 JDK8 永久代变化如下图: 1.新生代:Eden+From Survivor+To Survivor 2.老年代:OldGen 3.永久代(方法区的实现) : PermGe ...

  9. jdk源码剖析五:JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)

    目录 1.背景 2.为什么废弃永久代(PermGen) 3.深入理解元空间(Metaspace) 4.总结 ========正文分割线===== 一.背景 1.1 永久代(PermGen)在哪里? 根 ...

随机推荐

  1. 1.MySQL的基本使用

    数据库的操作: 1.Windows中如何使用CMD进入MySQL数据库:     1 Windows+R  -->  输入 cmd 运行     2 C:\Users\***>D:    ...

  2. vue-cli 3 ----- 项目频繁发送‘sockjs-node/info’请求

    在vue-cli3跑项目时发现了这个问题,浏览器一直在频繁发送这个请求,导致联调时很不方便,而且本地开发时项目也不能实时更新. 看了网上很多的 (1)  解决方案, 大多都是直接去node_modul ...

  3. Redhat7 CentOS7安装阿里云的yum源

    先说CentOS的 1.备份 [root@harry ~]# cd /etc/yum.repos.d/ [root@harry yum.repos.d]# mkdir repo_bak [root@b ...

  4. Spring整合jms消息

    整个项目目录结构如下: JmsSpringContext.java package com.wulj.jms.internal.activisor; import org.slf4j.Logger; ...

  5. vim编辑Dockerfile时语法高亮

    参考Dockerfile构建容器---语法高亮 三个文件扔进相关的目录即可 1. /usr/share/vim/vimfiles/doc/dockerfile.txt *dockerfile.txt* ...

  6. WebDriverWait类以及类常用的方法

    WebDriverWait类提供了显式等待和隐式等待,显式等待的等待时间是固定的,固定了10s就必须等待10s,隐式等待的等待时间是个范围,例如最大10s,那么如果在3s的时候程序达到预期的结果,那么 ...

  7. 别人的Linux私房菜(24-25)X Window设置介绍、Linux内核编译与管理

    X Window主要组件为:X Server .X Client . Window Manager . Display Manager. X Server管理硬件,X Client则为应用程序,将所需 ...

  8. css3弹性伸缩布局(一)—————flex布局

    CSS3弹性伸缩布局简介 2009年,W3C提出了一种崭新的方案—-Flex布局(即弹性伸缩布局),它可以简便.完整.响应式地实现各种页面布局,包括一直让人很头疼的垂直水平居中也变得很简单地就迎刃而解 ...

  9. CDH部署StreamSets

    StreamSets是一个大数据采集工具,数据源支持包括结构化和半/非结构化,目标源支持HDFS,HBase,Hive,Kudu,Cloudera Search, ElasticSearch等.它包括 ...

  10. HTTP 缓存简单了解

    HTTP 缓存简单了解.文章整理了相关资料,记录了部分实践.方便大家轻松了解缓存.能回答上三个问题,HTTP缓存就算理解呢.能否缓存?缓存是否过期?协商缓存? 概要: web缓存 缓存的处理 前端解决 ...