深入理解Java虚拟机jvm-永久代(Permanent Generation)

2023-11-11

永久代

方法区(Method Area)与Java堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。它和堆在逻辑上是连续的,但在物理上是不连续的,所以也叫非堆(Non-Heap)。

jdk6及以前

很多人都更愿意把方法区称呼为“永久代”。

HotSpot虚拟机中,静态变量、字符串常量池都是分配在永久代中,我们可以通过-XX:PermSize和-XX:MaxPermSize限制永久代的大小,即可间接限制其中常量池的容量。

jdk7

原本存放在永久代的静态变量、字符串常量池被移至Java堆之中。无法通过永久代参数限制常量池大小。可以使用-Xmx参数限制最大堆大小进而限制常量池大小。

jdk8

终于完全废弃了永久代的概念。

永久代已被元空间(Metaspace)所取代。它使用的是本地内存(Native Memory),也就是直接在操作系统的内存中进行分配和管理。这使得元空间的大小不再受到 Java 堆的限制。

把JDK 7中永久代还剩余的内容(主要是类型信息,运行时常量池、类型信息、常量、字段、方法等)全部移到元空间中。无法通过永久代参数限制常量池大小。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入理解Java虚拟机jvm-永久代(Permanent Generation) 的相关文章

  • 如果您不在 Java 中进行克隆,那么您会做什么以及如何称呼它?

    有没有人对 Java 中的复制构造函数 工厂方法等有任何建议或已建立的最佳实践和命名约定 特别是 假设我有一堂课Thing我想要一个返回新值的方法Thing与 a 具有相同的值Thing传入 如果是实例方法 则作为实例 您会将其作为构造函数
  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • 如何在ArrayList中的特定位置插入对象

    假设我有一个大小为 n 的对象的 ArrayList 现在我想在特定位置插入另一个对象 假设在索引位置 k 大于 0 且小于 n 并且我希望索引位置 k 处及其之后的其他对象向前移动一个索引位置 那么有没有什么方法可以直接在Java中做到这
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • Hashset - 创建 Set 后使对象相同

    如果我们在 HashSet 中添加两个不同的对象 可变的 然后通过调用 setter 更改对象的值 使它们相同 则大小仍然是 hashSet 的 2 我无法理解其原因 public static void main String args
  • Java 小程序在 Mac 上闪烁

    这个问题很奇怪 问题并非在每个平台上都会发生 我在使用 MacOSX 的 Google Chrome 中出现了这种情况 但在 Safari 中却没有出现这种情况 对于使用 Windows 的朋友来说 在 Google Chrome 上运行得
  • 获取Android库中的上下文

    我正在编写一个 Android 应用程序 它的一些功能封装在内部库中 但是 要使此功能发挥作用 库需要一个应用程序上下文的实例 为图书馆提供这种上下文的最佳方式是什么 我看到了一些选择 但没有一个有吸引力 Have my library c
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • for循环中更新JLabel的问题

    我的程序的想法是从之前在其他 JFrame 中保存的列表中选择一个名称 我想在标签中一个接一个地打印所有名称 它们之间有很小的延迟 然后停在其中一个名称上 问题是lbl setText String 如果有多个则不起作用setText co
  • 如何让“循环”泛型在 Java 中工作?

    我在编译以下涉及一些泛型的代码时遇到错误 public abstract class State
  • JERSEY:错误跟踪:java.lang.IllegalStateException:实体输入流已关闭

    我正在使用 Jersey 2 x 以下是我的控制器 GET Path id Produces application json public Response getUser PathParam id int userId Context
  • JPA Web 应用程序管理策略

    我们目前正在开发一个 J2EE Web 应用程序 使用 JPA 作为我们的数据访问层 我们目前正在研究几种不同的策略来在我们的应用程序中利用缓存 Create an EntityManager per request 在请求范围内获取缓存
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 如何使用eclipse调试JSP tomcat服务?

    我想使用 Eclipse IDE 调试器来调试单独运行的 JSP Struts Tomcat Hibernate 应用程序堆栈 如何设置 java JVM 和 eclipse 以便设置断点 监视变量值并查看当前正在执行的代码 我刚刚用谷歌搜
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • com.sun.xml.ws.message.saaj.SAAJHeader 无法转换为 com.sun.xml.ws.security.opt.impl.outgoing.SecurityHeader

    我正在尝试访问第三方 Web 服务 该服务要求我创建一个传递时间信息 用户名和密码的安全标头 我在网上搜索了可行的示例 并尝试了多种方法 我正在尝试使用 Java 6 中内置的内容来做到这一点 我不确定我做错了什么 从 WSDL 生成 We
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja

随机推荐

  • 机器学习--决策树

    一 决策树简介 决策树 DecisionTree 又称为判定树 是另一种特殊的根树 它最初是运筹学中的常用工具之一 之后应用范围不断扩展 目前是人工智能中常见的机器学习方法之一 决策树是一种基于树结构来进行决策的分类算法 我们希望从给定的训
  • idea快捷键汇总mac_mac版本IDEA快捷键

    本文中的快捷键均为系统默认配置 一 mac系统键盘和符号对应关系 1 Control 或 Ctrl 2 Caps Lock 3 Command 或 Cmd 4 Option 或 Alt 5 Shift 二 mac系统自有快捷键 1 comm
  • 深入学习jquery源码之each()

    each 遍历一个数组或对象 可以是DOM json等格式 等价于for循环 返回值 jQuery each callback 参数 对于每个匹配的元素所要执行的函数 概述 以每一个匹配的元素作为上下文来执行一个函数 意味着 每次执行传递进
  • java JDBC连接数据库代码大全

    使用JDBC操作数据库 1 JDBC基础 JDBC简介 JDBC Java Database Connectivity 是一种可以执行SQL的Java API 通过它可以用一种API操作不同的数据库 JDBC驱动 不同数据库间 标准的SQL
  • 关于Linux下ISE和vivado安装cable usb驱动的问题

    由于先前安装Android Studio一直不成功 一气之下 本人重装了系统 导致之前装的驱动什么的都没有了 这时再安装vivado 检测不到驱动 这里介绍怎么安装cable usb的驱动 供参考 要安装这个驱动 我之前是安装了ISE 然后
  • 内存超频时序怎么调_最高4133MHz,光威血影DDR4内存B550平台超频指南

    Zen1 Zen 和Zen2超频内存时 一般是用Thaiphoon搭配DRAM Calculator for Ryzen自动计算时序 电压等参数 Zen3还没获得DRAM Calculator for Ryzen支持 超频内存得手动调节 近
  • 你知道什么是DBA吗?

    数据库管理员 英文是Database Administrator 简称DBA 这个职位对不同的人意味着不同的意义 一个小的软件开发工作室和一个分工高度明细的大公司相比 DBA的职责来得更加宽泛一些 一个公司 不管它是自己开发应用软件 还是购
  • ROS2与ROS1对比

    提示 ROS初学小白 文章目录 前言 一 ROS1与ROS2对比 二 ROS1创建工作空间 2 1 创建工作空间 Creat ROS Working Paths 2 2 用VScode打开 Start VScode 2 3 创建功能包 Cr
  • org.apache.jasper.JasperException: Unable to compile class for JSP: An error occurred at line: 1 i

    出现的原因是maven内置1 6版本的tomcat 无法把编译jsp 所以把tomcat版本改成高版本1 7 maven没有实现1 8插件 如果改成1 8会报错
  • Redis基础【完整版】:简介和常用命令、全面key操作、五种数据类型的增删改查、Redis与Python交互(附源代码)

    目录 一 Redis简介和常用命令 1 Reids简介 2 redis常用命令 进入redis 查看数据库版本 切换数据库 退出redis 二 全面key操作 1 查看当前数据有哪些键 2 创建数据 3 获取数据 4 获取数据如果显示是十六
  • 内核源代码的阅读

    在学习内核的过程中难免遇到很多问题 阅读源代码是一种非常直接的方式 通过在线源码阅读网站 bootlin 可以方便地在C代码的符号间跳转 但是随着源码中宏的大量使用 跳转功能也显得力不从心了 除此之外 网站的代码显示主题是普通文本主题 不太
  • 红队隧道应用篇之Frp内网穿透(十)

    简介 Frp工具下载地址 https github com fatedier frp releases Frp可将处于防火墙或内网后的主机对外网提供http https tcp或udp等服务 例如在虚拟机做个frp内网穿透 在其他主机访问其
  • android gpuimage显示的缩放和剪裁模式

    原文 http blog csdn net u011270282 article details 51505755 在gpuimagerender里面有如下方法 GPUImage ScaleType CENTER CROP表示剪裁 可以修改
  • python二级题库 第四套 附刷题软件

    刷 题软件 模拟python二级考试 操作题刷题软件 公众h 露露IT 回复 python二级 一 选择题 1 描述数据库系统中全局数据逻辑结构 且为全体用户公共数据视图的是 A 概念模式 B 外模式 C 内模式 D 中间模式 解析 本题考
  • 使用yt_dlp下载油管视频

    yt dlp工具是一个开源的项目 项目地址 https github com yt dlp yt dlp 下载地址 https github com yt dlp yt dlp releases 查看支持的下载格式 yt dlp F htt
  • ztree中获取某节点的所有叶子节点

    var setting data simpleData enable true callback onClick treenodeClick function treenodeClick event treeId treeNode clic
  • vue数据双向绑定模型

    记录vue的数据双向绑定模型的常见的问题
  • 英文输入法

    注意 答案仅作为参考 实际考试中下列代码通过用例100 但不代表最优解 主管期望你来实现英文输入法单词联想功能 需求如下 依据用户输入的单词前缀 从已输入的英文语句中联想出用户想输入的单词 按字典序输出联想到的单词序列 如果联想不到 请输出
  • 微软 Office 中的零日漏洞: “ Follina”将在宏被禁用时工作

    信息安全网的研究人员在微软无处不在的 Office 软件中发现了一个零日代码执行漏洞 这个被称为 Follina 的漏洞已经流传了一段时间 网络安全研究员 Kevin Beaumont 追溯到4月12日微软的一份报告 并使用 Office
  • 深入理解Java虚拟机jvm-永久代(Permanent Generation)

    永久代 jdk6及以前 jdk7 jdk8 方法区 Method Area 与Java堆一样 是各个线程共享的内存区域 它用于存储已被虚拟机加载的类型信息 常量 静态变量 即时编译器编译后的代码缓存等数据 它和堆在逻辑上是连续的 但在物理上