深入元空间
元空间是干嘛的?
元空间存储的是类的相关信息,就是类的运行时表达。包括:
Class文件
类的结构和方法
常量
注解
代码优化
JDK1.8分界
在1.8版本之前,类的meta信息、类变量、字符串常量池都存储在永久代。
1.8版本以后,类变量、实例变量、字符串常量池都在堆,meta放到了元空间
元空间上的内存分配
类首次使用的时候,由类加载器锁定Class文件的位置,并在元空间分配内存。类加载器是在堆内存上的,但是元空间的内存是归属于这个类加载器对象的。后续再使用同一类型,不再分配新的元空间内存了,因为使用的Class是同一个。
bootstrap类加载器和application类加载器是不会被回收的,而动态类加载器,在其负责加载的类对象不再使用时会被回收。
元空间的内存大小
元空间的内存大小,默认和本地内存大小一样。但是可以通过-XX:MetaspaceSize指定元空间的内存大小。
元空间在以下两种情况下会触发垃圾回收:
OOM发生
元空间的内存占用超过了JVM的阈值
默认阈值的大小就是-XX:MetaspaceSize,可以通过-XX:MinMetaspaceFreeRatio和-XX:MaxMetaspaceFreeRatio来指定。
元空间内存回收
元空间分配的内存回收的前提是对应的类加载器不再使用。
类加载器被回收的前提是,这个类加载器负责的相关类的实例不再使用。

此时,存在两个类型为O的对象,一个类型为P的对象,对应的类加载器的实例是深蓝色的那个圆。元空间中分配了相关空间给O和P类存储相关信息。

如果两个O类型的对象不再使用,此时两个实例不再对应栈上的任何引用,但是尚未进行垃圾回收。

完成一次垃圾回收,此时O类型的两个对象已被清理,剩下的P类型的对象和类加载器的实例一起被复制到了Survivor区域。但是,此处虽然O类型不再使用,但是对应的元空间的内存占用不能被释放,因为这个类加载器,不仅仅负责O类型,还负责P类型,而P类型还存在实例,因此不可以被回收。

最终,P对象也被释放,meta空间也完成了释放。
相关文章:
深入元空间
元空间是干嘛的?元空间存储的是类的相关信息,就是类的运行时表达。包括:Class文件类的结构和方法常量注解代码优化JDK1.8分界在1.8版本之前,类的meta信息、类变量、字符串常量池都存储在永久代。1.8版本以后,类变量、实…...
前端技术和框架
一、各种技术概述 1.HTML 🧨HTML中文称为超文本标记语言,从语义上来说,它只是一种是一种标识性的语言,并不是一种编程语言。 <p>这是一段话</p>通过这个标签可以表示文本的一个段落。而且其中还有还有图片标签、视…...
02从零开始学Java之Java到底是个啥?
博主简介我是壹壹哥(孙玉昌),十年软件开发授课经验,CSDN博客专家、阿里云专家博主、掘金优秀创作者、infoQ专家博主;关注壹壹哥(孙玉昌),带你玩转Java,轻松实现从入门到放弃,哦不,到熟悉&#x…...
KEIL5中头文件路劲包含问题
方式1:1.Keil中添加头文件相对路劲的方法在c/c配置中添加路劲,最终是将添加的绝对路径转化为相对路径;注意:相对路径的当前位置指.uvproj文件所在位置在C/C配置中的include paths”中添加工程所用的所有头文件的路径;2…...
机智云目前我用过最便捷的物联网快速开发方案
GE211 MINI DTU上手来看,是一款尺寸比较小巧的模块,适合放置在几乎所有白色家电中,通过ph2.0端子(注意不要买错)引出了5v、gnd、tx、rx。可以说是非常方便了。下面正式开始我们的接入流程:首先注册一个机智…...
MySQL基础篇1
第1章 数据库介绍 1.1 数据库概述 什么是数据库? 数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。 数据库分两…...
AQS 源码解读
一、AQS AQS 是 AbstractQueuedSynchronizer 的简称,又称为同步阻塞队列,是 Java 中的一个抽象类。在其内部维护了一个由双向链表实现的 FIFO 线程等待队列,同时又提供和维护了一个共享资源 state ,像我们平常使用的 ReentrantLo…...
使用 DataLoader 加载数据报错‘expected sequence of length 4 at dim 1 (got 0)’
使用 transformer 将字符串转为 id 序列,字符串为中英文混杂形式, 运行中出现报错:expected sequence of length 4 at dim 1 (got 0) 发现是在encoder_plus转换时,将输入的文本根据max_length截断了,导致[MASK]等字段…...
第十四届蓝桥杯第三期模拟赛B组C/C++原题与详解
文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…...
致敬三八女神节,致敬IT女生
前言 三八女神节是一个特别的节日,它是为了纪念所有的女性,表达对她们的尊重和关爱。在这个特别的节日里,我们想要致敬所有在IT领域中奋斗的女生,她们用自己的智慧和努力为这个世界带来了无限的可能。 IT女神 从事IT行业的女生…...
【Go语言学习笔记】数据
目录字符串数组数组初始化指针复制切片基本操作resliceappendcopy字典deletemap是引用类型并发操作字符串 字符串是不可变字节(byte)序列,其本身是一个复合结构 type stringStruct struct{str unsafe.Pointerlen int }头部指针指向字节数组…...
puzzle(0919)六宫数局
目录 六宫数局 示例题目 简单模式 普通模式 困难模式 六宫数局 最强大脑同款项目。 找出一条给定起点和终点的路径,每一步的方向任选,在这个方向上移动的步数是当前数的质因数分解中2、3、5的次数。 示例题目 按照六边形坐标系来建立坐标系&#…...
脑机接口科普0016——独立BCI与非独立BCI
本文禁止转载!!!! 所谓的“独立BCI”与“非独立BCI”仅仅是BCI系统中的一个术语。本章主要是介绍一下这两个术语。 这两个术语是由Wolpaw在2002年提出来的。 独立BCI是指不依赖于中枢神经系统的的输出。 非独立BCI是指那种依赖…...
女神节告白代码
今天是女神节,送给所有女神们一句话: 爱自己是终生浪漫的开始,无论何时都要好好爱自己 目录 1. 请求动画帧填充 2.点类 3.粒子类 编辑 4.ParticlePool 池类 5.创建和填充 6.处理循环队列 7.更新活动粒子 8.移除非活性粒子 9.绘制有…...
【数据结构】单链表:头部操作我很行,插入也不用增容!!!
单链表 文章目录单链表1.链表1.1链表的概念和结构1.2链表的分类2.单链表的模拟实现2.1单链表的打印2.2单链表的尾插2.3单链表的头插2.4单链表的尾删2.5单链表的头删2.6单链表的查找2.7单链表的中间插入(在结点前插入)2.8单链表的中间删除(删除该结点)2.9单链表的中间插入(在结点…...
SpringBoot——使用WebSocket功能
springboot自带websocket,通过几个简单的注解就可以实现websocket的功能; 启动类跟普通的springboot一样: /*** 2023年3月2日下午4:16:57*/ package testspringboot.test7websocket;import org.springframework.boot.SpringApplication; im…...
博弈论小课堂:非零和博弈(实现双赢)【纳什均衡点】
文章目录 引言I 非零和博弈1.1 囚徒问题1.2 博弈中双方的收益矩阵II 在现实中找均衡点2.1 博弈通常不是一次性的,而是反复进行的2.2 博弈论讲的都是阳谋的策略2.3 人类还处于文明的初级阶段,人的道德水准不容高估2.4 乌合之众效应2.5 很多时候看似是双赢,其实是在更大范围内…...
数组中的逆序对
解题思路1: 看到这个题目,我们的第一反应是顺序扫描整个数组。每扫描到一个数组的时候,逐个比较该数字和它后面的数字的大小。如果后面的数字比它小,则这两个数字就组成了一个逆序对。假设数组中含有n个数字。由于每个数字都要和…...
C++基础了解-01-基础语法
基础语法 一、基础语法 C 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 -…...
phpmyadmin 文件包含(CVE-2014-8959)
0x01 漏洞介绍 phpMyAdmin是phpMyAdmin团队开发的一套免费的、基于Web的MySQL数据库管理工具。该工具能够创建和删除数据库,创建、删除、修改数据库表,执行SQL脚本命令等。phpMyAdmin的GIS编辑器中libraries/gis/GIS_Factory.class.php脚本存在目录遍历漏洞。远程攻击者可借助…...
OpenClaw Dashboard:AI智能体集群的实时可视化指挥中心设计与部署
1. 项目概述:OpenClaw Dashboard,一个为AI智能体集群打造的实时指挥中心如果你正在运行一个OpenClaw智能体集群,或者对构建多智能体系统感兴趣,那么你很可能面临一个共同的痛点:如何清晰地掌控全局?当几十甚…...
基于事件驱动与SSH的轻量级实时文件同步工具Pynchy详解
1. 项目概述:一个轻量级、高可用的文件同步守护进程最近在折腾个人服务器和开发环境之间的文件同步,试过不少方案,要么太重,要么配置复杂,要么实时性不够。直到我发现了crypdick/pynchy这个项目,它用 Pytho…...
Polkadot 正在补完 L1 里没人做过的“垂直 RISC-V 集成“
作者: PaperMoon团队 位 Parity 工程师周末买了一块 RISC-V 板子,把节点跑起来看看会断在哪里。配图是一张工程师的桌子,板子、线、调试器、电源。 很多人会觉得这就是一个 maker culture 风格的小实验。但如果你把过去三年 Polkadot 在 IS…...
动手写一个 JVM 调优学习项目:6 个真实场景带你掌握性能优化
动手写一个 JVM 调优学习项目:6 个真实场景带你掌握性能优化 项目地址: https://gitee.com/jiucenglou/jvm-tuning-lab 技术栈: Java 8 Maven 适合人群: Java 开发者、性能调优初学者、面试准备者 🤔 为什么写这个项目? 在实际开发和面试中…...
液态硅胶注塑加工供应商推荐
随着液态硅胶(LSR)在医疗、母婴、电子、汽车等多个领域的广泛应用,选择一个可靠的液态硅胶注塑加工供应商变得至关重要。作为天沅智能制造科技有限公司(简称TYM),我们不仅深耕于液态硅胶注射成型机械的设计…...
详解 Deepsec:Vercel 开源 AI 代码安全防护工具的技术架构与实现原理
摘要在 AI 大模型深度融入软件开发全链路的今天,代码安全防护正面临 “复杂逻辑漏洞难发现、传统工具误报率高、源码隐私保护难” 三重核心挑战。Vercel 开源的 Deepsec 作为一款Agent 驱动的本地化 AI 安全防护工具,跳出传统 SAST(静态应用安…...
HandheldCompanion:解锁Windows掌机游戏体验的终极钥匙
HandheldCompanion:解锁Windows掌机游戏体验的终极钥匙 【免费下载链接】HandheldCompanion ControllerService 项目地址: https://gitcode.com/gh_mirrors/ha/HandheldCompanion 你是否曾为Windows掌机的游戏兼容性而烦恼?是否梦想着在便携设备上…...
隐写术:把秘密藏在你眼皮底下
你有没有想过,秘密不一定非要“加密”,还可以“藏起来”?这就是隐写术的思想——让别人根本不知道这里藏了信息。早在公元前5世纪,一位希腊人为了把情报传回祖国,把文字写在刮去蜡的木板上,再用新蜡覆盖。收…...
终极解决方案:3分钟快速修复VC++运行库缺失问题,彻底告别软件启动失败
终极解决方案:3分钟快速修复VC运行库缺失问题,彻底告别软件启动失败 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否经常遇到游戏或…...
别再只会用Broadside了!手把手教你用Endfire阵列搞定智能音箱的远场拾音
智能音箱远场拾音实战:从Broadside到Endfire的工程进阶指南 当你的智能音箱在厨房油烟机轰鸣时依然能清晰识别"播放爵士乐"指令,或是会议设备在开放式办公室准确捕捉三米外的发言——这背后往往是Endfire阵列的精密调校在发挥作用。作为嵌入式…...
