zoukankan      html  css  js  c++  java
  • java内存区域

      java在运行过程中会把内存分为若干区域。分别是

    1.程序计数器

      程序计算器是一块较小的内存,是当前线程所执行字节码的行号指示器。分支、循环、跳转、异常处理、线程恢复等功能都依赖于这个计数器来完成。

    2.java虚拟机栈

      java虚拟机栈是线程私有的,生命周期与线程相同。每个方法在执行的时候都会创建一个栈帧,用于存储局部变量表、操作栈,动态链接、方法出口等信息。java虚拟规范中,对该区域定义了两种异常。如果线程请求的栈深度超过虚拟机运行的深度则抛StackOverflow异常,如果线程无法横向扩展时,抛OutOfMemoryError异常。

    3 本地方法栈

      本地方法栈和java虚拟机栈类似,区别时,本地方法栈为虚拟机使用到的native方法服务。

    4 java堆

      java堆是最大的一块内存。线程共享。堆内存可分为新生区和老年区。新生区又分为Eden区、From Suvivor区、to Suvivor区。

    5 方法区(java8后叫永久区)

      方法区线程共享,用于存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。

    6 运行时常量区

      运行时常量区是方法区的一部分,Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池。用于存放编译期生成的各种字面量和符号引用,这部分将在类加载后存放到方法区的运行时常量池中。

    7 直接内存

      直接内存不是java运行时数据区的一部分。可以由本地native方法分配的堆外内存,通过堆内的引用进行操作。

  • 相关阅读:
    16 把第 i 个结点从链表中删除
    15 在特定结点前插入新的元素
    14 求链表的表长
    13 返回特定数据域的结点个数
    12 按号定位
    11 按值定位
    11 头插入法创建链表)
    09 尾插入法创建单链表(实现2)
    08 尾插入法创建单链表(实现1)
    centos6.5 安装gcc 4.9.0
  • 原文地址:https://www.cnblogs.com/notejava/p/7197895.html
Copyright © 2011-2022 走看看