当前位置:首页 > Java技术 > JVM和JMM内存模型

JVM和JMM内存模型

2022年11月06日 16:09:44Java技术14

JVM内存模型

JVM内存模型主要指运行时的数据。
  • 线程独占

    • 栈(Stack)
      栈,也叫方法栈。
      线程私有的。
      线程在执行每个方法时都会同时创建一个栈帧,用来存储局部变量表、操作栈、动态链接、方法出口等信息。
      调用方法时执行入栈,方法返回时执行出栈。

    • 本地方法栈(Native Method Stack)
      与栈类似,native方法使用本地方法栈。

    • 程序计数器(Program Counter)
      每个线程工作时都有一个独立的计数器,保存着当前线程所执行的字节码位置。

  • 线程共享

    • 堆(Heap)
      线程共享。
      存放对象实例。

    • 方法区(Method Area)
      也叫非堆区。
      存放虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
      JDK1.7 永久代和JDK1.8 Metaspace都是方法区的实现。

JMM内存模型

 主内存、线程自己的工作内存
  • 原子性
    基本数据读写,如int a = 10;
    synchronized关键字

  • 可见性
    volatile关键字(强制内存同步保证不同的线程总是能够看到该变量的最新值,阻止指令重排序)
    synchronized关键字

  • 有序性
    volatile关键字(强制内存同步保证不同的线程总是能够看到该变量的最新值,阻止指令重排序)
    synchronized关键字

  • happens-before规则
    程序顺序规则,即一个线程内必须保证语义串行性
    锁规则,即对同一个锁的解锁一定发生在再次加锁之前

作者:cdfive
来源链接:https://www.cnblogs.com/cdfive2018/p/12321321.html

版权声明:
1、JavaClub(https://www.javaclub.cn)以学习交流为目的,由作者投稿、网友推荐和小编整理收藏优秀的IT技术及相关内容,包括但不限于文字、图片、音频、视频、软件、程序等,其均来自互联网,本站不享有版权,版权归原作者所有。

2、本站提供的内容仅用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵犯相关权利人及本网站的合法权利。
3、本网站内容原作者如不愿意在本网站刊登内容,请及时通知本站(javaclubcn@163.com),我们将第一时间核实后及时予以删除。


本文链接:https://www.javaclub.cn/java/68190.html

分享给朋友:

“JVM和JMM内存模型” 的相关文章

jvm优化——运行参数篇

jvm优化——运行参数篇

在这篇文章中主要介绍jvm的一些运行参数 对jvm优化总结篇可以阅读:JVM优化——总结篇 1、jvm的运行参数 1.1、三种参数类型 jvm的参数类型分为三种,分别是: 1、标准参数: 标准参数的意思是说一般比较稳定,在以后jvm的版...

jvm性能调优实战 - 31从测试到上线

jvm性能调优实战 - 31从测试到上线

文章目录 Pre 开发好系统之后的预估性优化 系统压测时的JVM优化 对线上系统进行JVM监控 Pre 前面两篇文章,已经给大家介绍...

JVM 内存模型

JVM 内存模型

Java 的内存模型JMM(Java Memory Model) JMM主要是为了规定了线程和内存之间的一些关系。根据JMM的设计,系统存在一个主内存(Main Memory),Java中所有实例变量都储存在主存中,对于所有线程都是共享的。每条线程都有自己的工作内存(Workin...

Java 内存模型和 JVM 内存结构真不是一回事

Java 内存模型和 JVM 内存结构真不是一回事

这两个概念估计有不少人会混淆,它们都可以说是 JVM 规范的一部分,但真不是一回事!它们描述和解决的是不同问题,简单来说, Java 内存模型,描述的是多线程允许的行为 JVM 内存结构,描述的是线程运行所设计的内存空间 JVM 是什么呢?它屏蔽了...

JVM参数设置

JVM参数设置

JVM参数设置 基本参数 通过一张图来了解如何通过参数来控制各区域的内存大小 控制参数 -Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -XX:NewSize设置新生代最小空间大小。...

Tomcat的JVM启动参数配置

Tomcat的JVM启动参数配置

一、windows环境下 1、添加JVM参数 到Tomcat的bin目录下,打开文件catalina.bat,添加如下参数,然后保存。 set "JAVA_OPTS=-Xms512M -Xmx1024M" 2、检验是否生效 双...

JVM内存模型

JVM内存模型

个人博客 http://www.milovetingting.cn JVM内存模型 前言 本文为学习Java相关知识所作笔记,参考以下资料:https://github.com/Snailclimb/JavaGuide ,感谢原作者...

静态变量、实例变量、局部变量在JVM中存放的位置

文章目录 静态变量、实例变量、局部变量在JVM中存放的位置 静态变量、实例变量、局部变量在JVM中存放的位置 总结一下这三种变量在JVM中存放...

JVM-内存结构

JVM-内存结构

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net JVM在执行程序的过程中会将内存划分为不同的数据区域,请看下图。 如果理解了上图,JVM的内存结构基本上掌握了一半。从图...

jvm虚拟机-什么是jvm

jvm虚拟机-什么是jvm

最近看了一段时间jdk源码,在看源码的过程中对数据的存储不是很清楚,当时就在想数据到底存在哪里去了?以前只是看博客什么的对jvm有一个大概的了解,但是没有深入研究。经过一段时间的研究<<深入理解java虚拟机后>>,才决定写一些关...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。