zoukankan      html  css  js  c++  java
  • 常量池、perm(持久代)、方法区、栈

     

    常量池、perm(持久代)、方法区、栈

    常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。

    除了包含代码中所定义的各种基本类型(如:int、long等等)和对象型(如String及数组)的常量值(final)还包含一些以文本形式出现的符号引用,比如:

        #类和接口的全限定名
        #字段的名称的描述符
        #方法和名称的描述符

    虚拟机必须为每个被装载的类型维护一个常量池。
    常量池就是该类型所用到常量的一个有序集合,包括直接常量(string,integer和floating常量)和对其他类型,字段和方法的符号引用。

    对于String常量,它的值在常量池中的。
    而JVM中的常量池在内存当中是以表的形式存在的,对于String类型,有一张固定长度的CONSTANT_String_info表用来存储文字字符串值,
    注意:该表只存储文字字符串值,不存储符号引用。

    $$在程序执行的时候,常量池会储存在Method Area,而不是堆中
    JVM构成:
    类装载子系统
    运行时数据区 
        方法区
        堆(heap)
        Java栈(stack)
        PC寄存器
        本地方法栈
    执行引擎

    方法区和持久代的关系:

    方法区物理上存在于堆里,而且是在堆的持久代里面;
    但在逻辑上,方法区和堆是独立的。

    一般说堆的持久代就是说方法区,因为一旦JVM把方法区(类信息,常量池,静态字段,方法)加载进内存以后,这些内存一般是不会被回收的了。
  • 相关阅读:
    一张图搞定OAuth2.0
    OAuth2.0的refresh token
    ACCESS_TOKEN与FRESH_TOKEN
    关于token和refresh token
    如何解决前后端token过期问题
    对外开放的接口验证方式
    python api接口认证脚本
    Python Thrift 简单示例
    整数中1出现的次数(从1到n整数中1出现的次数)
    连续子数组的最大和
  • 原文地址:https://www.cnblogs.com/java2016/p/5538064.html
Copyright © 2011-2022 走看看