当前位置: 首页 > news >正文

永久代你不知道的东西

一、在Java 7及之前的版本中,永久代(Permanent Generation)用于存储类的元数据信息、常量池等。
且当类不再被引用时,其对应的类加载器加载的类信息可以被卸载并回收。


二、永久代垃圾回收主要分2部分内容:废弃的常量和无用的类。
1.判断废弃常量:一般是判断没有该常量的引用。
2.判断无用的类,要以下三个条件都满足:
1)该类所有的实例都已经回收,也就是 Java 堆中不存在该类的任何实例。
2)加载该类的 ClassLoader 已经被回收。
3)该类对应的 java.lang.Class 对象没有被任何地方所引用,无法在任何地方通过反射访问该类的方法。


三、永久代可能会发生内存溢出(OutOfMemoryError: PermGen space)。可以采取以下措施来避免:
1.增加永久代大小:通过JVM参数-XX:MaxPermSize来设置永久代的最大大小。
2.类数据共享:使用JVM的Class Data Sharing(CDS通过将一组核心系统类(如java.lang.String)装载到共享内存中,使这些类可以在多个Java虚拟机之间共享)功能,可以减少永久代的内存占用。
3.使用JVM垃圾回收策略:如CMS GC(Concurrent Mark Sweep)的老年代回收策略,可以回收永久代中的不再使用的类元数据。


四、引申
从Java 8开始,永久代被元空间(Metaspace)所取代。元空间不再位于JVM的堆内存中,而是直接使用本地内存。这意味着元空间的大小只受本地操作系统的内存限制,不再有最大值限制,从而减少了永久代内存溢出的风险。相应的,JVM参数也发生了变化,即使用-XX:MaxMetaspaceSize来设置元空间的最大大小。
 


微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

欢迎关注。助您在编程路上越走越好!

相关文章:

  • 哈希表---闭散列
  • colmap在windows上编译好的程序直接可以运行支持cuda
  • Spring是怎么处理循环依赖的
  • 【车载以太网测试从入门到精通】——SOME/IP协议测试
  • 聊聊Python中的lambda函数的使用以及模块和包是什么?
  • F28034中断
  • 深入理解内联函数(C语言)
  • YOLO系列模型疑问
  • python:__set_name__使用
  • Algoriddim djay Pro Ai for Mac:AI引领,混音新篇章
  • windows 下nginx常用命令
  • 本地图片先压缩,再上传
  • 中国电子学会(CEIT)2023年09月真题C语言软件编程等级考试四级(含详细解析答案)
  • 【Shell】sed编辑器实例
  • 上下文视觉提示实现zero-shot分割检测及多visual-prompt改造
  • 深入了解以太坊
  • 03Go 类型总结
  • Angular Elements 及其运作原理
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript学习总结——原型
  • Java多线程(4):使用线程池执行定时任务
  • JS 面试题总结
  • leetcode386. Lexicographical Numbers
  • leetcode388. Longest Absolute File Path
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Mysql数据库的条件查询语句
  • vue总结
  • 初识MongoDB分片
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 开发基于以太坊智能合约的DApp
  • 那些年我们用过的显示性能指标
  • 通过几道题目学习二叉搜索树
  • 微信小程序开发问题汇总
  • 写代码的正确姿势
  • 学习HTTP相关知识笔记
  • ​卜东波研究员:高观点下的少儿计算思维
  • $$$$GB2312-80区位编码表$$$$
  • (1)Android开发优化---------UI优化
  • (1)常见O(n^2)排序算法解析
  • (2)STM32单片机上位机
  • (Charles)如何抓取手机http的报文
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (MTK)java文件添加简单接口并配置相应的SELinux avc 权限笔记2
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (第61天)多租户架构(CDB/PDB)
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (转)memcache、redis缓存
  • (转)编辑寄语:因为爱心,所以美丽
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .libPaths()设置包加载目录
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core 版本不支持的问题