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

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

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

     

    虚拟机栈

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

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

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

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

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

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

    方法区

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

    程序计数器

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

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

    本地方法栈

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

     

  • 相关阅读:
    java实现九九乘法表
    for循环的阶乘
    Struts2 表单提交与execute()方法的结合使用
    Struts2 第三个程序 namespacce的用法
    java 字符串的比较compareTo
    java中的位预算
    java调用C++ DLL库方法
    Socket编程模式理解与对比
    c 高级函数的简单用法
    TCP粘包分析与处理
  • 原文地址:https://www.cnblogs.com/yxiaooutlook/p/7610664.html
Copyright © 2011-2022 走看看