zoukankan      html  css  js  c++  java
  • JVM基本结构

    JVM之运行时常量池(Runtime Constant Pool)

    基本特性:

    • l  方法区的一部分,在方法去中分配,加载泪或者接口后就创建运行时常量区。
    • l  class文件每一个类或接口的常量池表(constant_pool table)的运行时表现形式,
    • l  包括编译期的数值字面量和运行期的方法或者字段引用

    ref:class文件结构

    JVM之PC寄存器(Program Counter Register)

    基本特性:

    • l  当前线程执行的字节码的行号指示器。
    • l  Java虚拟机支持多个线程同时执行,每一个线程都有自己的pc寄存器。
    • l  任意时刻,一个线程都只会执行一个方法的代码,称为该线程的当前方法,对于非native方法,保存正在执行的字节码的指令地址,native方法,则为undifine
    • l  容量大小至少需要能够存储一个returnAddress类型的数据或者与平台相关的本地指针的值

    JVM之方法区(Method Area)

     基本特性:

    • l  线程共享区域,存储被JVM加载的类信息、常量、静态变量、即时编译器编译的代码等
    • l  堆的逻辑部分,不限定方法去内的内存位置和编译代码的管理策略,不限定实现垃圾回收
    • l  容量可不定也可动态扩展,不要求物理连续
    • l  回收主要针对常量池的回收,和类型的卸载

    HotSpot虚拟机方法区:

    使用永久代实现方法区。不包含字符串常量池。

    JVM之堆(Heap)

    基本特性:

    • l  虚拟机启动时创建的线程共享的内存区域,所有实例对象和数组对象分配内存的区域
    • l  GC垃圾手机管理器管理的主要区域,GC堆
    • l  容量可以固定,也可以动态扩展,自动收缩 -Xmx最大堆大小 -Xms最小、初始堆大小
    • l  所使用的内存不需要保证连续性,即不需要物理上的连续性,只需要逻辑上的连续性。
    • l  分配需要的容量超过提供的容量,或者扩展也无法满足的时候,抛出OutOfMemoryError

    Java堆根据automatic storage management system自动内存管理系统gc的管理方式进行内存划分。一般采用分代收集算法(新生代(Eden,From Survivor, To Survivor),老年代,永久代)。

    JVM之栈(Stacks)

     https://www.cnblogs.com/niejunlei/p/5987611.html
  • 相关阅读:
    python中filter(),map()和reduce()的用法及区别
    Python中的单例模式的几种实现方式的及优化
    python标准库和第三方库的区别
    django和flask的区别
    wtforms
    protobuf学习
    人物FSM
    策略模式
    虚函数调用机制
    虚析构函数
  • 原文地址:https://www.cnblogs.com/niejunlei/p/5987888.html
Copyright © 2011-2022 走看看