Java 内存模型(JMM),实际上的目的就是为了统一内存管理。这让我想到了,作为一个程序员总是想着有银弹,有一个代码能万能的在所有场景上。经过多次尝试我发现这是不可能的:需求在变,技术在更新,没有什么事万能的。

volatile 关键字保证了可见性、有序性,不能保证原子性,这是一个遗憾。是个事物总是有一些不圆满的。

Java 的线程还是和操作系统挂钩,所以,编程人员,还是要会底层,才能走的更远。

说道锁,JDK 1.6 对于锁的优化还是让人大开眼界。自旋锁、轻量级锁、偏向锁,为了解决重量级锁的性能问题而发明出来的锁,一个比一个厉害。自旋锁解决了上下文切换频繁的问题;轻量级锁解决了加锁性能太低的问题;偏向锁更是在轻量级锁进一步优化。然而别忘了我说的,没有银弹,没有银弹,没有银弹。现实生活中,大多数应用可能没有那么多共享变量,所以这三个锁,性能很好;但是,也有很多应用有很多共享变量,比如秒杀活动。这个时候用这三个锁就很头贴,冲突太多,偏向锁要膨胀到轻量级锁,轻量级锁要膨胀到重量级锁,性能急剧下降,膨胀的时候还有 STW 出现,在秒杀活动中这是十分可怕的。

就说这么多,学了这些内容,发现 JVM 的理念和唯物主义很像,一切从实际出发。

漫谈 JVM —— 内存模型、线程、锁的更多相关文章

  1. JVM内存模型、指令重排、内存屏障概念解析

    在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器.运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要.否则,你很难搞清楚哪 ...

  2. JVM内存模型和性能优化 转

    JVM内存模型和性能优化 JVM内存模型优点 内置基于内存的并发模型:      多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于 ...

  3. java线程内存模型,线程、工作内存、主内存

    转自:http://rainyear.iteye.com/blog/1734311 java线程内存模型 线程.工作内存.主内存三者之间的交互关系图: key edeas 所有线程共享主内存 每个线程 ...

  4. JVM内存模型和性能优化

    JVM内存模型优点 内置基于内存的并发模型:      多线程机制 同步锁Synchronization 大量线程安全型库包支持 基于内存的并发机制,粒度灵活控制,灵活度高于数据库锁. 多核并行计算模 ...

  5. JVM初探 -JVM内存模型

    JVM初探 -JVM内存模型 标签 : JVM JVM是每个Java开发每天都会接触到的东西, 其相关知识也应该是每个人都要深入了解的. 但接触了很多人发现: 或了解片面或知识体系陈旧. 因此最近抽时 ...

  6. Java基础知识强化100:JVM 内存模型

    一. JVM内存模型总体架构图:  方法区和堆由所有线程共享,其他区域都是线程私有的 二. JVM内存模型的结构分析: 1. 类装载器(classLoader) 类装载器,它是在java虚拟机中用途是 ...

  7. Inside JVM 内存模型

    Inside JVM 内存模型 来源  原文:https://blog.csdn.net/silentbalanceyh/article/details/4661230 参考:IBM开发中心文档,&l ...

  8. JVM内存模型、指令重排、内存屏障概念解析(转载)

    在高并发模型中,无是面对物理机SMP系统模型,还是面对像JVM的虚拟机多线程并发内存模型,指令重排(编译器.运行时)和内存屏障都是非常重要的概念,因此,搞清楚这些概念和原理很重要.否则,你很难搞清楚哪 ...

  9. [转]JVM内存模型

    最近排查一个线上java服务常驻内存异常高的问题,大概现象是:java堆Xmx配置了8G,但运行一段时间后常驻内存RES从5G逐渐增长到13G #补图#,导致机器开始swap从而服务整体变慢.由于Xm ...

随机推荐

  1. Windows Phone 8.1 后台任务

    Windows Phone 8.1 应用可以添加多个后台任务,以辅助应用完成某些任务. (1)新建前台应用 后台任务是依托于前台应用的,所以必须拥有一个前台应用. 该前台应用的功能很简单,就是读取文件 ...

  2. [javase学习笔记]-6.6 基本数据类型參数与引用数据类型參数的传递过程

    这一节基本数据类型參数和引用数据类型參数的传递过程. 数据类型參数和引用參数我们在前面章节中都已涉及到了,那么我们来看看以下的两段代码: //基本数据类型參数传递 class Demo { publi ...

  3. [Angular] Export directive functionalities by using 'exportAs'

    Directive ables to change component behaives and lookings. Directive can also export some APIs which ...

  4. 【a802】最少转弯问题

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 给出一张地图,这张地图被分为n*m(n,m<=100)个方块,任何一个方块不是平地就是高山.平地可以通 ...

  5. 数组类型转换失败:NSMutableArray和NSArray的相互转换

    1.数组类型转换无效(错误) @property(strong, nonatomic) NSMutableArray *temp_Array; _temp_Array=(NSMutableArray ...

  6. 探险 - 树型dp(背包)/多叉树转二叉树

    题目大意: 国家探险队长 Jack 意外弄到了一份秦始皇的藏宝图,于是,探险队一行人便踏上寻宝之旅,去寻找传说中的宝藏. 藏宝点分布在森林的各处,每个点有一个值,表示藏宝的价值.它们之间由一些小路相连 ...

  7. MySQL日期 专题

    一.MySQL 获得当前日期时间 函数 1.1 获得当前日期+时间(date + time)函数:now() mysql> select now();+--------------------- ...

  8. 定制Octopress

    在 github pages 上搭建好 octopress 博客之后,博客的基本功能就能使用了.如果想自己定制也是没问题的,octopress 有较详尽的官方文档,原则上有问题求助官方即可:octop ...

  9. mysql 权限命令

    grant all on *.* to 'root' identified by 'root';

  10. LaTeX —— 特殊符号与数学字体

    1. 特殊符号 ℓ(\ell):用于和大小的 I 和 数字 1 相区分 R(\Re) ∇(\nabla):微分算子 2. 数学字体 mathbb:blackboard bold,黑板粗体 mathca ...