JVM PermGen –您在哪里?

这篇文章介绍了JVM内存结构的一些基础知识,并快速窥视了PermGen,以了解自Java SE 8出现以来它已消失的地方。

裸基础

JVM只是系统上运行的另一个进程,魔术始于java命令。 像任何OS进程一样,它需要内存才能运行。 记住– JVM本身是对硬件的软件抽象,在其之上运行Java程序,并拥有OS独立性和WORA (一旦在任何地方运行一次写入)。

快速介绍JVM内存结构

根据规范,JVM分为5个虚拟内存段。

  • 方法(非堆)
  • JVM堆栈
  • 本机堆栈
  • PC寄存器

jvm-memory-segments1

  • Java程序中分配的每个对象都需要存储在内存中。 堆是存储所有实例化对象的区域。 是的–责怪操作员填满Java堆!
  • 由所有线程共享
  • JVM用尽时会抛出java.lang.OutOfMemoryError
  • 使用-Xms-Xmx JVM选项来调整堆大小

内存不足错误

细分为

  • 伊甸园 (年轻)–该区域中存在新对象或预期寿命短的对象,并使用-XX:NewSize和-XX:MaxNewSize参数对其进行调节。 GC(垃圾收集器)次要空间
  • 幸存者 –仍被引用的对象设法在伊甸园空间的垃圾收集中幸存下来,最终到达该区域。 通过-XX:SurvivorRatio JVM选项进行调节
  • (已租用)–适用于在伊甸园和幸存者空间中可以长期保存垃圾的对象(当然,这是由于缠结的引用所致)。 一个特殊的垃圾收集器负责这个空间。 使用权空间中的对象脱空间处理由GC Major负责

方法范围

  • 也称为非堆区域(在HotSpot JVM实现中)
  • 它分为2个主要子空间

永久 生成 –该区域存储来自类定义,结构,方法,字段,方法(数据和代码)和常量的类相关数据。 可以使用-XX:PermSize和-XX:MaxPermSize进行调节。 如果空间不足,则IT会导致java.lang.OutOfMemoryError:PermGen空间。

代码 缓存 –缓存区域用于存储编译的代码。 编译后的代码不过是本机 代码 (特定于硬件),并且由Oracle HotSpot JVM专用的JIT (及时)编译器处理。

JVM堆栈

  • 与Java类中的方法有很多关系
  • 存储局部变量并调节方法调用,部分结果和返回值
  • Java中的每个线程都有自己的堆栈(专用)副本,其他线程无法访问。
  • 使用-Xss JVM选项进行了调整

本机堆栈

  • 用于本机方法(非Java代码)
  • 每个线程分配

PC寄存器

  • 特定于特定线程的程序计数器
  • 包含要执行的JVM指令的地址(对于本机方法,则未定义)

因此,这就是JVM内存段基础知识。 回到永久的一代。

那么PermGen在哪里?

本质上,PermGen已被完全删除 d, 并被另一个称为Metaspace的存储区域取代

元空间–快速事实

  • 它是本机堆内存的一部分
  • 可以使用-XX:MetaspaceSize-XX:MaxMetaspaceSize进行调整
  • 清理由XX:MetaspaceSize选项驱动的启动,即达到MetaspaceSize时。
  • java.lang.OutOfMemoryError:如果本机空间已用完,将接收元数据空间
  • 如果存在PermGen相关的JVM选项,即-XX:PermSize和-XX:MaxPermSize,将被忽略

这显然只是冰山一角。 为了全面了解JVM,没有比规范本身更好参考

您也可以探索

  • Java语言规范
  • Java 8有什么新功能?

干杯!

翻译自: https://www.javacodegeeks.com/2014/09/jvm-permgen-where-art-thou.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362206.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python6-函数

转载于:https://www.cnblogs.com/WIU1905/p/11101249.html

Windows Phone 7.1 “芒果” SDK Beta 下载地址

Windows Phone 7.1 “芒果” SDK Beta 今天早上发布,第一时间下载体验。功能果然激动人心。 下载地址: 离线ISO请点我, 在线安装请点我。转载于:https://www.cnblogs.com/finehappy/archive/2011/05/25/2056849.html

Windows系统安装 ffmpeg

下载及解压 ffmpeg官方下载地址:https://ffmpeg.org/download.html 下载好后将其解压至你想保存的位置中。 环境变量设置 打开Windows设置,在搜索框输入:系统高级设置。 新建环境变量,并输入bin目录具体位置。 安装检查 按住 w…

Java黑科技之源:JVMTI完全解读

Java生态中有一些非常规的技术,它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。 形象地说,JVMTI是Java虚拟机提供的一整套后门。通过这套后…

常见的CSS布局

各种常见的CSS布局 在工作中会经常用到很多的布局方式,这里总结一下所遇到的布局,会持续更新。 悬挂布局 实现这种布局的方式有很多,这边主要挑两个,如下: 方式一:使用浮动和块级格式化上下文特性 这种…

OSCP-Kioptrix2014-2 漏洞利用

pChart 2.1.3 文件包含漏洞 搜索漏洞查看漏洞理由代码:hxxp://localhost/examples/index.php?ActionView&Script%2f..%2f..%2fetc/passwd 之前的8080端口禁止访问,看看apache的配置:http://192.168.1.78/pChart2.1.3/examples/index.php?ActionView&Script%2f..%2f..…

CodeSmith注册机,支持5.2.2和5.2.1版

CodeSmith,不用说了,大名鼎鼎的代码生成工具。最早是免费的,后来收费啦这个注册机是针对目前新的CodeSmith 5.2.2的,支持Professinal和其他版本。使用的方法:安装原版的试用版本,从官方网站下载运行试用版&…

linux epoll,poll,select

epoll函数用法,还有点poll和select 1,LT的epoll是select和poll函数的改进版。 特点是,读完缓冲区后,如果缓冲区还有内容的话,epoll_wait函数还会返回,直到把缓冲区全部读完。 2,ET的epoll&#…

shell学习笔记1-文件安全与权限

1,创建文件的用户和他所属的组拥有该文件,文件的属主可以设定谁具有读、写、执行该文件的权限,根用户可以改变任何普通用户的设置。 2,一个文件一经创建,就具有三种访问权限:读(可以显示该文件的…

最新70佳单页网站设计案例欣赏(上篇)

单页网站是指只有一个页面的网站,这种形式的网站曾经非常流行,现在依然有很多人喜欢。不过,并不是每个网站都适合做成单页,一般都是内容比较少而且将来内容也不怎么增加的情况才适合这样做。如果你打算做一个这样的网站&#xff0…

Kubernetes 中文文档

Kubernetes 中文文档 如果想学习 Kubernetes 的小伙伴,可以参考如下文档学习: https://www.kubernetes.org.cn/docs 文档中详细讲解了 k8s 的设计理念,基本概念,常用命令等。 转载于:https://www.cnblogs.com/miracle-luna/p/1111…

网易原来也是个骗子

当初开通photo.163.com网易相册时,就是看着网易的宣传口号:免费而且不限容量!结果现在坏了,规则说改就改,容量一下子收到1G,超过部份要么给钱¥¥¥¥&#xffe5…

不同设备屏幕尺寸和DPR适配

为什么需要适配 目前市面上设备屏幕属性十分多样化(宽度和DPR并不一致),而作为设计和前端开发,无法为每个尺寸的设备单独设计一套UI并将其转为前端代码,这不现实。所以我们需要一套方案来将一套设计稿完美呈现在不同尺…

Edge浏览器开发人员工具

UserAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240" 本地存储/会话存储模拟达到上限 资源终于全部列表出来了 删除 Cookie 和 删除会话 Cookie 样式可以实时编辑了 …

linux 第一个内核模块Hello World

内核模块是Linux内核向外部提供的一个插口,其全称为动态可加载内核模块(Loadable Kernel Module,LKM),我们简称为模块。Linux内核之所以提供模块机制,是因为它本身是一个单内核(monolithic kern…

【JS复习笔记】00 序

作为一个前端苦手,说是复习,你就当我是重学好了。 好吧,我当然不可能抱着一个砖头去复习,所以捡了本薄的来读——《JavaScript语言精粹》。 当初带我的人说这本书挺好,就看这本书好了。我觉得他说的挺对。我喜欢这么…

Generator执行步骤浅析

在Generator函数出现之前JS的函数只能返回一个值,返回的方式就是return,但是Generator函数可以返回多个值,返回的方式是yield。并且Generator赋予了外部动态影响函数内部的执行顺序的能力。 基础语法 function* f () {const a yield 1cons…

使用 jQuery.Pin 垂直滚动时固定导航

ZKEACMS的导航默认是不能固定的,随着页面的滚动而滚动,为了有更好的用户体验,当页面往下滚动时,可以将导航固定在顶端,这样方便用户点击。 jQuery Pin 借助jQuery的一个插件 jQuery.Pin,这个插件可在用来…

MDK升级后的头文件冲突

////TITLE:// MDK升级后的头文件冲突//AUTHOR:// norains//DATE:// Friday 17-June-2011//Environment:// Keil MDK 4.2// .NET Micro Framework Porting 4.1// 因为在移植的时候,发现了不少MDK编译的一些问题,于是便想升级到最新版本&a…

阻止默认事件

在JS中经常需要阻止元素的默认事件。而阻止默认事件的方法都是使用事件对象的preventDefault()方法或者在函数中return false。在最近一次开发中使用preventDefault()方法的时候遇到一个问题&#xff0c;现在才想/猜明白原因&#xff0c;场景是这样的&#xff1a; <a href&…