Runtime Data Area(运行时数据区)

JVM运行时数据区包括JVMStack中的局部变量表、操作数栈、动态链接和方法返回,每个Java线程有一个栈,方法对应栈帧。本地方法栈处理native方法。程序计数器记录执行位置。方法区的常量池在1.7是永久代,在1.8后移到堆或元空间。堆用于对象分配,1.7后引入直接内存提升IO性能。
摘要由CSDN通过智能技术生成

运行时数据区有

  • JVM Stack(栈)-frame

     1.局部变量表

this,i,x.....

      2.操作数栈

每一个局部便变量表操作时,都会进栈,用完出栈,在赋值给局部变量表

      3.动态链接

符号引用转直接引用,找到调用的方法

      4.方法返回

方法返回值

栈遵循先进后出的原则,一个java线程对应一个栈,每一个方法对应一个栈帧,方法执行完之后出栈

  • native·method stacks(本地方法栈)

主要是java程序调用hspot c和c++的时候的方法的本地方法栈

  • Progaram Counter(程序计数器)

记录下一次程序执行的位置

  • Method area(方法区)----run -time constant pool

常量池内容,class文件

1.7(永久代 permanert space).启动前必须指定内存大小,不能更改,字符串常量在这,在1.8之后位于堆,FGC不会清理

1.8(元数据 meta Space)可以指定,也可以不指定,大小取决于物理内存,FGC会清理

  • Heap(堆)

堆的内存划分之后再说

  • Direct Memory(直接内存) 

为了提高io的访问速度,1.7之后jvm新增了直接内存,jvm可以直接访问操作系统管理的内存,用户空间可以直接访问内核空间,归操作系统管(NIO,零拷贝)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值