首页 > 其他分享 >方法区及元空间简介

方法区及元空间简介

时间:2024-04-01 10:59:06浏览次数:27  
标签:JDK 区及 简介 虚拟机 1.8 永久 XX 空间 方法

什么是方法区?

方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,方法区到底要如何实现那就是虚拟机自己要考虑的事情了。也就是说,在不同的虚拟机实现上,方法区的实现是不同的。当虚拟机要使用一个类时,它需要读取并解析 Class 文件获取相关信息,再将信息存入到方法区。方法区会存储已被虚拟机加载的 类信息、字段信息、方法信息、常量、静态变量、即时编译器编译后的代码缓存等数据

方法区和永久代以及元空间有什么关系?

方法区和永久代以及元空间的关系很像 Java 中接口和类的关系,类实现了接口,这里的类就可以看作是永久代和元空间,接口可以看作是方法区,也就是说永久代以及元空间是 HotSpot 虚拟机对虚拟机规范中方法区的两种实现方式。

并且,永久代是 JDK 1.8 之前的方法区实现,JDK 1.8 及以后方法区的实现便成为元空间。

抽象的来说,方法区 == 接口,永久代 == 1.7实现类,元空间 == 1.8实现类

方法区常用参数有哪些?

JDK 1.8 之前永久代还没被彻底移除的时候通常通过下面这些参数来调节方法区大小。

-XX:PermSize=N //方法区 (永久代) 初始大小
-XX:MaxPermSize=N //方法区 (永久代) 最大大小,超过这个值将会抛出 OutOfMemoryError 异常:java.lang.OutOfMemoryError: PermGen

相对而言,垃圾收集行为在这个区域是比较少出现的,但并非数据进入方法区后就“永久存在”了。

JDK 1.8 的时候,方法区(HotSpot 的永久代)被彻底移除了(JDK1.7 就已经开始了),取而代之是元空间,元空间使用的是直接内存。下面是一些常用参数:

-XX:MetaspaceSize=N //设置 Metaspace 的初始(和最小大小)
-XX:MaxMetaspaceSize=N //设置 Metaspace 的最大大小

与永久代很大的不同就是,如果不指定大小的话,随着更多类的创建,虚拟机会耗尽所有可用的系统内存。

标签:JDK,区及,简介,虚拟机,1.8,永久,XX,空间,方法
From: https://blog.csdn.net/weixin_66196770/article/details/137224895

相关文章

  • React Native简介和环境配置,差点挂在第四面
    ReactNative目前需要NodeJS5.0或更高版本。本文发布时Homebrew默认安装的是最新版本,一般都满足要求。brewinstallnode安装完node后建议设置npm镜像以加速后面的过程(或使用科学上网工具)。注意:不要使用cnpm!cnpm安装的模块路径比较奇怪,packager不能正常识别!npmconfig......
  • 1.python简介
    """python简介python版本:python-V或python--versionpython特色:1.python是一种解释性语言:这意味着开发过程中没有编译这个环节。类似于PHP和Perl2.python是交互式语言:这意味着可以在一个python提示符>>>后直接执行代码3.python是面向对象语言:这意味着python支持面向......
  • 计算linux磁盘空间
     可以准确获取某个挂载点的硬盘空间,已使用空间。现在问题就出在挂载点的判断和类型过滤上面。 #include<iostream>#include<fstream>#include<sstream>#include<vector>#include<string>#include<sys/statvfs.h>#include<map>structDISK_......
  • 离散化简介
    简介(Introduction)离散化——把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率,即:在不改变数据相对大小的条件下,对数据进行相应的缩小。离散化本质上可以看成是一种 哈希,其保证数据在哈希以后仍然保持原来的全/偏序关系。描述(Descripti......
  • ARM-GUN汇编简介
    目录一、GUN汇编书写格式1.标号(Label)2.操作码(Opcodes)3.操作数(Operands)4.注释(Comments)二、GUN汇编常用伪指令1.系统预定义的段2.常量的定义3.数据定义4.条件伪指令5.文件包含伪指令6.其他常用伪指令​ 人们利用助记符代替机器指令的操作码,用标号代替指令及操作数的地......
  • 【Clang+LLVM+honggfuzz学习】(一)LLVM简介、安装和第一个Hello Pass
    本文结构,PS:根据需要选择观看哦1.前言参考2.简介传统编译器架构LLVM架构3.LLVM安装版本准备官网源码下载git下载安装过程4.写一个LLVMPass旧HelloPass实现(legacyPMversion)新HelloPass实现(UsingtheNewPassManager)1.前言漏洞检测做毕设,还有一年。半......
  • 因有人突然访问自己的qq空间因而看自己曾经的qq空间和《头脑特工队》有感
    人的成长真的失去太多太多,多到可以让一个人的外在表现完全改变,足以让你无法相信你曾经是这样一个人,现在的我甚至连朋友圈都不敢发,也不敢随便点赞,总怕某某人看到怎么,我彻底懵了,我怎么转变这么大的?我再也回不到当时人与人间的关系,那么纯真那么自然那么简单,现在人与人之间仿佛有一层......
  • KingbaseES 避免wal日志占用大量磁盘空间
    背景wal日志一直增长很快,查看归档目录也在执行归档,归档无异常,是归档执行太慢的原因吗?还是wal日志生成的太快了的原因呢?现场环境wal日志的磁盘空间比较小。分析首先我们分析可否加速归档速度呢,因为如果能加快归档速度就可以缓解wal日志所在磁盘空间紧张的问题,答案是不可以。arc......
  • 多视图三维重建-SFM简介
    背景掌握传统的多视图三维重建基本流程总体流程多视图三维重建的Pipieline如下图,总共分为四个步骤:拍摄场景多视角的图像建立这些图像之间的联系(DataAssociation)SFM稀疏重建MVS稠密重建DataAssociation建立图像之间的联系主要包含以下4个步骤:1)特征提取;2)特征匹配;3)基......
  • Visual Studio Code & Python教程1简介
    1简介VisualStudioCode是一款开源代码编辑器,可免费使用,完全支持Python编程语言的开发。它具有一些有用的功能,例如与世界各地的其他程序员进行实时协作。本章旨在介绍VSCode,帮助您了解其开发过程及其不同组件。我们将讨论为什么它可能是最受欢迎的代码编辑器,了解它的功能,并讨......