长春怎样建网站?,网络公司开发网站,网页设计软件培训机构,网站备案资料 下载jvm7 jvm8这篇文章介绍了JVM内存结构的一些基础知识#xff0c;并快速窥视了PermGen#xff0c;以了解自Java SE 8出现以来它已消失的地方。 裸基础 JVM只是系统上运行的另一个进程#xff0c;魔术始于java命令。 像任何OS进程一样#xff0c;它需要内存才能运行。 请记住… jvm7 jvm8 这篇文章介绍了JVM内存结构的一些基础知识并快速窥视了PermGen以了解自Java SE 8出现以来它已消失的地方。 裸基础 JVM只是系统上运行的另一个进程魔术始于java命令。 像任何OS进程一样它需要内存才能运行。 请记住– JVM本身是对硬件的软件抽象在其之上运行Java程序并拥有OS独立性和WORA 一次写入即可在任何地方运行。 快速介绍JVM内存结构 根据规范JVM分为5个虚拟内存段。 堆 方法非堆 JVM堆栈 本机堆栈 PC寄存器 堆 Java程序中分配的每个对象都需要存储在内存中。 堆是存储所有实例化对象的区域。 是的–责怪新操作员填满Java堆 由所有线程共享 JVM耗尽时会抛出java.lang.OutOfMemoryError 使用-Xms和-Xmx JVM选项来调整堆大小 细分为 伊甸园 年轻–该区域中存在新对象或预期寿命短的对象并使用-XXNewSize和-XXMaxNewSize参数对其进行调节。 GC垃圾收集器次要空间 幸存者 –仍被引用的对象设法在伊甸园空间的垃圾收集中幸存下来最终到达该区域。 通过-XXSurvivorRatio JVM选项进行调节 旧 已租用–适用于在伊甸园和幸存者空间中可以长期保存垃圾的对象当然这是由于存在持久的引用。 一个特殊的垃圾收集器负责这个空间。 使用权空间中的对象脱空间由GC Major负责 方法范围 也称为非堆区域在HotSpot JVM实现中 它分为2个主要子空间 永久 生成 –该区域存储来自类定义结构方法字段方法数据和代码和常量的类相关数据。 可以使用-XXPermSize和-XXMaxPermSize进行调节。 如果空间不足则IT会导致java.lang.OutOfMemoryErrorPermGen空间。 代码 缓存 –缓存区域用于存储编译的代码。 编译后的代码不过是本机 代码 特定于硬件并且由Oracle HotSpot JVM专用的JIT 及时编译器处理。 JVM堆栈 与Java类中的方法有很多关系 存储局部变量并调节方法调用部分结果和返回值 Java中的每个线程都有自己的堆栈专用副本其他线程无法访问。 使用-Xss JVM选项进行了调整 本机堆栈 用于本机方法非Java代码 每线程分配 PC寄存器 特定于特定线程的程序计数器 包含要执行的JVM指令的地址对于本机方法则未定义 因此这就是JVM内存段基础知识。 回到永久的一代。 那么PermGen在哪里 本质上PermGen已被完全删除 d 并被另一个称为Metaspace的存储区域取代 。 元空间–事实 它是本机堆内存的一部分 可以使用-XXMetaspaceSize和-XXMaxMetaspaceSize进行调整 清理由XXMetaspaceSize选项驱动的启动即达到MetaspaceSize时。 java.lang.OutOfMemoryError如果本机空间已用完将接收元数据空间 如果存在PermGen相关的JVM选项-XXPermSize和-XXMaxPermSize将被忽略 这显然只是冰山一角。 为了全面了解JVM没有比规范本身更好的参考了 您也可以探索 Java语言规范 Java 8有什么新功能 干杯 翻译自: https://www.javacodegeeks.com/2014/09/jvm-permgen-where-art-thou.htmljvm7 jvm8