b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

基于计算机的内存模型如何实现Java中的爱恨纠缠

电脑杂谈  发布时间:2021-06-12 05:03:51  来源:网络整理

面试过程中,Java的内存模型(重点是Java的并发原理)和JVM的内存模型不是同一个问题,所以我在查询资料后总结了相关知识点,如果有的话欢迎指出错误的地方,也可以一起讨论。

基于计算机的内存设计结构,在CPU的发展过程中,运行速度越来越快,内存的读写速度跟不上CPU的运行速度,所以概念建议使用“缓存”。在读写过程中,CPU可以先将数据写入缓存,再由缓存将数据刷新到主存。因此,在多线程场景下,会出现“缓存不一致”,即多个线程对同一数据的缓存可能不一致。

基于数据的安全需要原子性、可见性和有序性

关于CPU和内存爱恨纠葛的更具体细节,我就不深入了,有兴趣的同学可以自行了解

Java 内存模型 (JMM)

··Java内存模型是一种符合内存模型规范的机制,屏蔽了各种硬件和操作系统之间的访问差异,保证Java程序可以在各种平台下访问内存,保证效果相同。及规格

先提三个概念,基本上内存模型就是为了解决这三个问题

原子性:CPU在操作过程中不能被暂停或中断,或者执行完成或不执行

可见性:当多个线程访问同一个变量时,一个线程修改该变量后,其他线程可以立即看到修改后的值

Sequence:程序按顺序执行代码

总结:JMM是一个规范,用于处理多线程共享内存时内存和缓存数据不一致的问题。

如何实现Java内存模型

Java 提供了一系列与并发相关的关键字,如:volatile、synchronized、final、concurren

其实这些就是Java内存模型在底层封装后提供给程序员的关键字。

本文的重点是了解JMM,所以相关关键词就不详细介绍了! ! ! !

synchronized 用于保证原子性

volatile 用于确保可见性

volatile 和 synchronized 都可以实现可见性

JVM 内存模型

Java 虚拟机将托管内存分为五个主要区域:

java虚拟机内存模型

1.程序计数器

概念:程序计数器是一个很小的内存空间,是线程私有的,可以看作是当前线程的行号指示器。

目的:CPU执行多线程任务时,为了保证线程能够正常切换到正确的执行位置,每个线程都有一个独立的程序计数器,不同线程之间的程序计数器不影响每个线程其他并独立存储。

注意:如果线程执行java方法,计数器记录的是虚拟机字节码指令的地址。如果是native [low-level method],则计数器为空。这个内存区域是虚拟机规范中唯一没有 OutOfMemoryError 的区域

2.Java 栈(虚拟机栈)

概念:栈描述了Java方法执行的内存模型。每个方法执行时,都会创建自己的内存栈来存储局部变量等相关信息。存储方式是一一的,所以这里有一个堆栈先进后出的过程。

当方法执行时,内存栈被销毁,所以方法中定义的变量被放到了内存栈中。

3.stack

概念:堆是Java虚拟机中最大的内存区域。因为堆中存储的对象是线程共享的,所以在使用多线程时也需要同步机制。大多数对象实例和数组都在堆上分配内存。之所以不是这样,是因为 JIT 编译器技术的成熟。这个说法不是绝对的。

注意:为什么栈和堆有区别:

当一个方法被执行时,每个方法都会建立自己的内存栈来存放方法中定义的变量,并在方法结束后销毁它,但是当程序中创建一个对象时,该对象会被保存在堆(也叫:运行时数据区,堆是其中的一部分)方便,可以重复使用,因为创建对象的成本通常比较大。即便如此,堆内存中的对象也不会随着方法的结束而被销毁。当对象被方法引用并且可能被其他引用变量使用时,该对象不会被销毁。只有当一个对象没有任何引用变量来引用它时,系统的垃圾回收机制才会在适当的时候对其进行回收(是不是听起来很熟悉,尤其像GC)

4.方法区

概念:方法区和堆的概念类似,就是所有线程共享的内存。为了区别于堆,也称为“非堆”

用途:用于存放虚拟机已经加载的类信息、常量和静态变量

5.本地方法栈

概念:本地方法栈与虚拟机栈所起的作用非常相似。不同的是虚拟机栈执行Java方法(即字节码)服务,而本地方法栈是虚拟机使用的native。方法服务,可能是底层C或者C++,我们打开jdk安装目录可以看到里面也有很多用C写的文件,可能是native方法调用的c代码。

GC:java GC一般指的是java的垃圾回收机制,是java与C/C++的主要区别之一

目的:为了解决内存泄露的问题(尽量解决,毕竟应该泄露的还是会泄露的)

我不会对GC做详细的介绍。毕竟我也在学习中。 GC可以用很久,还没总结。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shoujiruanjian/article-382217-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...