首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

JDK8之后-JVM运行时数据区域

首先弄清几个概念: 1.方法区(method area)只是JVM规范中定义的一个概念,用于存储类信息、常量池、静态变量、JIT编译后的代码等数据,具体放在哪里,不同的实现可以放在不同的地方。永久代是HotSpot虚拟机特有的概念,是对方法区的实现,别的JVM没有永久代的概念。(虽然去除了永久代,但是方法区作为概念上的区域仍然存在) 2.在JDK8中,JDK8的HotSpot VM已经是以前的HotSpot VM与JRockit VM的合并版,也就是传说中的“HotRockit”,只是产品里名字还是叫HotSpot VM。所以对于说JDK8去除永久代换成元空间的说法,就是默指的合并后的HotSpot虚拟机。 3.为什么要将永久代去除呢? 一方面是节省空间,避免了常见的永久内存错误:java.lang.OutOfMemoryError: PermGen问题。另一方面是为了整合JRockit,因为JRockit没有永代区这样类似的空间。 其实,从jdk7开始,就开始了永久代的转移工作,将譬如符号引用(Symbols)转移到了native heap;字面量(interned strings)转移到了java heap;等。但是指导JDK8永久代才被元空间替代。 4.元空间又是什么呢?以前存储在永久代里面的数据现在存在了哪里? 元空间是一块与堆不相连的本地内存。原本存在永久代的数据,一部分移到了java堆里面,一部分移到了本地内存里面(即元空间)(文档中原句:Move part of the contents of the permanent generation in Hotspot to the Java heap and the remainder to native memory.) 。永久代中原来存储的字符串常量(池)、符号引用(这两个在jdk7普遍就已经将其放在堆上了)和类的静态变量现在存储在java堆中,其余的数据作为元数据存储在元空间中。 5.什么是元数据呢? 元数据是数据的数据或者叫做用来描述数据的数据或者叫做信息的信息。(比如原本方法区存储的类信息、即时编译器编译后的代码等),也可以把元数据简单的理解成,最小的数据单位。元数据可以为数据说明其元素或属性(名称、大小、数据类型、等),或其结构(长度、字段、数据列),或其相关数据(位于何处、如何联系、拥有者)。 6.元空间详细:http://blog.csdn.net/lk7688535/article/details/51767460

04

JVM内存模型1 程序计数器2. Java虚拟机栈(JVM Stack)3. 本地方法栈(Native Method Stack)4 Java堆(Java Heap)5 方法区6 直接内存(Direc

JVM内存模型 1 程序计数器 1.1. 定义 程序计数器是一块较小的内存空间,可看作当前线程正在执行的字节码的行号指示器 如果当前线程正在执行的是 Java方法 计数器记录的就是当前线程正在执行的字节码指令的地址 本地方法 那么程序计数器值为undefined 1.2. 作用 程序计数器有两个作用 字节码解释器通过改变程序计数器来依次读取指令,从而实现代码的流程控制,如:顺序执行、选择、循环、异常处理。 在多线程的情况下,程序计数器用于记录当前线程执行的位置,从而当线程被切换回来的时候能够知道该线程

09

EL表达式总结_el表达式循环

EL 全名为Expression Language。EL主要作用: 1、获取数据     EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组) 2、执行运算     利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null} 3、获取web开发常用对象     EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。 4、调用Java方法     EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

03
领券