JVM运行时数据区和CPU优化以及线程原子操作

一、JVM运行时数据区

在这里插入图片描述
线程独占: 每个线程都会有它独立的空间,随线程生命周期而创建和销毁。
线程共享: 所有线程能访问这块内存数据,随虚拟机或者GC而创建和销毁。
方法区: 用于存储已被虚拟机家族的类信息、常量、静态变量、即时编译器编译后的代码等数据。
Java堆内存: Java堆是被所有线程共享的一块内存区域,此内存的唯一目的就是存放对象,几乎所有的对象实例都在这里分配内存。
虚拟机栈: 虚拟机栈描述的是Java方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储举报变量表、操作数栈、动态链接、方法出口等信息。每个方法从调用到执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到处栈的过程。

栈帧:虚拟机栈由多个栈帧(Stack Fframe)组成。一个线程会执行一个或多个方法,一个方法对应一个栈帧。

本地方法栈: 和虚拟机栈功能类似,虚拟机栈是为虚拟机执行JAVA方法而准备的,本地方法栈是为虚拟机使用Native本地方法而准备的。
程序计数器: 记录当前线程执行字节码的位置,字节码解释器工作时,就是通过改变计数器的值来选取下一条需要执行的字节码指令。如果执行java方法,存储的是字节码指令地址,如果执行Native方法,则计数器值为空。

直接内存: 直接内存不是JVM运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域,是我们常说的堆外内存。

二、CPU性能优化手段

1、缓存

为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化。
例如:CPU高速缓存。尽可能地避免处理器访问主内存的时间开销,处理器大多会利用缓存(cache)以提高性能。
在这里插入图片描述
CPU高速缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从Cache中调用。

CPU在读取数据时,先在L1中寻找,再从L2寻找,再从L3寻找,然后是内存,再后是外存储器。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值