zoukankan      html  css  js  c++  java
  • Jvm内存结构

     

    Jvm的内存结构:

    程序计数器:是JVM中一块较小的内存空间,可以看作是当前线程所执行的字节码的行号指示器,字节码解释器工作时就是通过这个计数器的值来

    选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理等(线程私有)

    虚拟机栈:虚拟机栈是指方法执行的内存模型,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数栈、动态连接、方法出口信息,

    每一个方法从调用到执行完成的过程,就对应的栈帧的入栈和出栈

     局部变量表:存放了编译期的各种基本数据类型(boolean,byte,char,shor,int,float,double,long)、对象引用(可以是一个指向对象起始地址的引用指针,也可以是指向一个代表对象的句柄)

    本地方法栈:本地方法栈与虚拟机栈作用类心,只是虚拟机栈为虚拟机执行java方法服务,而本地方法栈则为虚拟机使用到的Native方法服务

    堆:堆是垃圾收集管理的主要区域,堆可以分为:新生代(Eden空间、From区、To区)和老年代(线程共享)

    方法区:存储虚拟机加载的类信息、常量、静态变量等

     运行时常量沲(属于方法区):用于存放编译期生成的各种字面量和符号引用,这部份内容将在类加载后进方法区的运行时常量沲

    对象的创建过程:

    1、虚拟机遇到new指令,判断常量沲中是否有对应的符号引用,检查这个符号引用代表的类是否被加载、链接、初始化,如果没有就必须进行类的加载过程

    2、类加载检查后,需要进行对象的内存分配,内存分配有两种方式:

    指针碰撞(新生代,复制算法 serial、ParNew)

    空闲列表(老年代,CMS ,serial old)

  • 相关阅读:
    Java 字符串总结
    782B The Meeting Place Cannot Be Changed(二分)
    初学hash
    Codeforces Round #395 C. Timofey and a tree
    Java集合之ArrayList
    CA Loves GCD (BC#78 1002) (hdu 5656)
    hdu 5661 Claris and XOR
    hdu 5945 Fxx and game
    pay包注释(二)
    编程风格
  • 原文地址:https://www.cnblogs.com/xyz-star/p/10168291.html
Copyright © 2011-2022 走看看