测试AAA
程序计数器(线程私有)
程序计数器(Program Counter Register),也有称作为 PC 寄存器。保存的是程序当 前执行的指令的地址(也可以说保存下一条指令的所在存储单元的地址),当 CPU 需要执 行指令时,需要从程序计数器中得到当前需要执行的指令所在存储单元的地址,然后根据得 到的地址获取到指令,在得到指令之后,程序计数器便自动加 1 或者根据转移指针得到下 一条指令的地址,如此循环,直至执行完所有的指令。也就是说是用来指示执行哪条指令的。
java栈
Java 栈中存放的是一个个的栈帧,每个栈帧对应一个被调用的方法,在栈帧中包括局 部变量表、操作数栈、指向当前方法所属的类的运行时常量池的引用、方法返回地址、额 外的附加信息。当线程执行一个方法时,就会随之创建一个对应的栈帧,并将建立的栈帧压 栈。当方法执行完毕之后,便会将栈帧出栈。因此可知,线程当前执行的方法所对应的栈帧 必定位于 Java 栈的顶部。
本地方法栈
本地方法栈与 Java 栈的作用和原理非常相似。区别只不过是 Java 栈是为执行 Java 方法服务的,而本地方法栈则是为执行本地方法(Native Method)服务的。在 JVM 规 范中,并没有对本地方发展的具体实现方法以及数据结构作强制规定,虚拟机可以自由实现 它。在 HotSopt 虚拟机中直接就把本地方法栈和 Java 栈合二为一。
堆
Java 中的堆是用来存储对象本身的以及数组(当然,数组引用是存放在 Java 栈中的), 堆是被所有线程共享的,在 JVM 中只有一个堆。所有对象实例以及数组都要在堆上分配内 存,单随着 JIT 发展,栈上分配,标量替换优化技术,在堆上分配变得不那么到绝对,只能 在 server 模式下才能启用逃逸分析。
方法区
方法区中,存储了每个类的信息(包括类的名称、方法信息、字段信息)、静态变 量、常量以及编译器编译后的代码等。 在 Class 文件中除了类的字段、方法、接口等描述信息外,还有一项信息是常量池, 用来存储编译期间生成的字面量和符号引用。
直接内存
NIO,使用 native 函数库直接分配堆外内存,不经过 JVM 内存直接访问系统物理内存的类 ——DirectBuffer。 DirectBuffer 类继承自 ByteBuffer,但和普通的 ByteBuffer 不同, 普通的 ByteBuffer 仍在 JVM 堆上分配内存,其最大内存受到最大堆内存的限制;而 DirectBuffer 直接分配在物理内存中,并不占用堆空间,其可申请的最大内存受操作系统 限制
最新文章
- 数据仓库开发——Kettle使用示例
- js/jQuery使用过程中常见问题
- C#简易一元二次求解器
- BZOJ4107 : [Wf2015]Asteroids
- WPF 设置程序开机自动运行(+注册表项)
- Eclips将lib打入war中
- java.lang.IllegalArgumentException: addChild: Child name '/SSHE' is not unique
- [MEAN Stack] First API -- 6. Using Express route instance
- sqlserver 出现 因为文件组 'PRIMARY' 已满 的解决办法 有可能是磁盘剩余空间不足 导致的
- WPF组件开发之组件的基类
- android之interpolator的用法详解
- 【模拟】XMU 1054 Hacker
- 禁用与启用Button点击
- 『vue踩坑日常』 在index.html中引入静态文件不生效
- angular2的lazyload初体验
- keras框架 反复调用model 模型 出错
- [Functional Programming] Using JS, FP approach with Arrow or State Monad
- tpshop全局公共方法
- 随笔 -- NIO -- 相关 -- 系统概述
- python之numpy的基本使用