Java运行时数据区

Java运行时数据区

1.程序计数器:是一块较小的的内存空间,是当前程序所执行的字节码的行号指示器。字节码解释器的工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理

2.Java虚拟机栈:每个方法在执行时都会创建一个帧栈,用于存储局部变量表,操作数栈,动态链接方法出口等。

3.本地方法栈:与虚拟机栈比较相似,主要为虚拟机使用到的native方法服务。

4.java堆:此区主要用于存储对象。java虚拟机规范中说,所有对象示例以及数组都要在堆上分配,但是随着JIT编译器的发展与逃逸技术的逐渐成熟,栈上分配,标量替换等,不是所有的对象都在堆上分配 。 

5.方法区,与堆一样,是线程共享的内存区域,用于存储被虚拟机加载的类信息,常量,静态变量,即时编译后的代码等数据。对于HotSpot来说也叫永久带。

6.运行时常量池:是方法区的一部分。class文件除了有类的版本,字段,方法,接口等描述信息外,还有一项信息是常量池,用于存放编译期间生成的各种字面量和符号引用。注意:String的intern()方法(intern用来返回常量池中的某字符串,如果常量池中已经存在该字符串,则直接返回常量池中该对象的引用。否则,在常量池中加入该对象,然后返回引用)

7.直接内存

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java内存模型 Java内存模型,就是Java程序运行时的内存模型。而Java代码是在Java虚拟机上运行的,由...
    狮_子歌歌阅读 5,072评论 1 2
  • 读《深入理解Java虚拟机》读书笔记 程序计数器: 为了保证程序能够连续地执行下去,处理器必须具有某些手段来确定下...
    HWilliamgo阅读 1,315评论 0 0
  • 程序计数器:是线程私有的,是一块较小的内存空间,当前线程所执行的字节码的行号指示器。JAVA虚拟机的多线程是通过线...
    彬荣阅读 1,423评论 0 0
  • Java虚拟机在执行java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.根据 <<java虚拟机规范...
    JimmieYang阅读 8,325评论 0 10
  • 出门在外,无外乎就是衣食住行。那么我们租房的时候主要在乎的最重要的就是吃饭的问题。而集悦城的特殊之处就在于,这里是...
    274Kwater阅读 3,841评论 2 1

友情链接更多精彩内容