zoukankan      html  css  js  c++  java
  • Java虚拟中内存分块

    Java虚拟机JVM(Java Virtual Machine)中内存分块

      JAVA中通常分为5个区域虚拟机栈、堆、方法区、程序计数器、本地方法区。我们一般讲的Java虚拟机管理的四个区域虚拟机栈、堆方法区和程序计数器

     

    虚拟机栈

    虚拟机栈通常也叫栈(stack),是有多个栈帧组成的;是线程私有的,每调用一个方法就在栈中创建一个栈帧,用于存放该方法中的局部变量等信息。

    它的生命周期与方法的生命周期一致。也就是说,当一个方法调用完成,该栈帧就被摧毁,再次调用该方法就重新在栈中开辟一个新的栈帧。这也是局部变量作用域小的体现。

    堆(heap)是java虚拟机管理空间最大的一块区域,它被所有的线程共享

    存放了所有对象的数据,每个对象在堆中都有一个唯一的地址,被称为引用,相当某些语言中的指针。

    当方法在栈帧中创建一个对象时,就在堆空间中开辟一块内存,分配一个地址,而栈中的对象就是存放堆中的地址,称之为‘引用’

    堆也是Java垃圾回收器回收的主要区域,所以也被称为‘GC堆’。当堆中的数据不再被引用的时候,该数据就成为了垃圾,等待Java虚拟机的垃圾回收机制回收它。

    方法区

    是将字节码文件加载入Java虚拟机时,存放的改字节码文件里的信息,包括方法信息、字段信息、常量的一些信息等,常量所在的区域也被称为常量区或常量池;池中的数据元素和数组的元素一样是通过索引访问的。

    程序计数器

    这是一个很小的区域,它存放了当先线程所运行的字节码的行号。分支、选择、循环等基础功能都靠它实现。

    在任何一个时刻,一个处理器或一个内核只会运行指令中的一行,所以每个线程的程序计数器是独立的互不影响。

    本地方法栈

    该栈中存放的是其他语言实现的一些方法(Native方法)等信息,不受JVM的的限制。

     

  • 相关阅读:
    JS替换字符
    sql 两个表字段叠加
    Qt实现窗口半透明显示
    Qt 设置窗口属性setWindowFlags函数
    ARM-Linux按键和旋钮控制
    飞凌开发板OK335xD烧写Linux镜像总结
    Qt QGraphics类应用——图片移动+选点缩放+控制移动区域
    Qt QGraphics类应用——地图缩放选点
    Ubuntu 同时使用有线和无线(有线连开发板,无限上网)
    Qt 自定义控件提升,头文件找不到的问题
  • 原文地址:https://www.cnblogs.com/yxiaooutlook/p/7610664.html
Copyright © 2011-2022 走看看