山东seo广西seo搜索引擎优化
常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:
#类和接口的全限定名
#字段的名称的描述符
#方法和名称的描述符
虚拟机必须为每个被装载的类型维护一个常量池。常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。
对于String常量,它的值在常量池中的。而JVM中的常量池在内存当中是以表的形式存在的,对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,注意:该表只存储文字字符串值,不存储符号引用。
$$在程序执行的时候,常量池会储存在Method Area,而不是堆中
JVM构成:
- 类装载子系统
- 运行时数据区
- 方法区
- 堆(heap)
- Java栈(stack)
- PC寄存器
- 本地方法栈
- 执行引擎
方法区和持久代的关系:
方法区物理上存在于堆里,而且是在堆的持久代里面;但在逻辑上,方法区和堆是独立的。