JVM高级特性与实践(十二):高效并发时的内外存交互.三大特征(原子.可见.有序性) 与 volatile型变量特殊规则 简介: 阿姆达尔定律(Amdahl):该定律通过系统中并行化与串行化的比重来描述多处理器系统能获得的运算加速能力. 摩尔定律(Moore):该定律用于描述处理器晶体管数量与运行效率间的发展关系. 当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍. Moore 系统中对某一部件采用更快执行方式所能获得的系统性能改进程度,取决于这种…
<深入理解Java虚拟机:JVM高级特性与最佳实践>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230062566 内容简介 作为一位java程序员,你是否也曾经想深入理解java虚拟机,但是却被它的复杂和深奥拒之门外?没关系,<深入理解java虚拟机:jvm高级特性与最佳实践>极尽化繁为简之妙,能带领你在轻松中领略java虚拟机的奥秘.<深入理解java虚拟机:jvm高级特性与最佳实践>是近年来国内出版的唯一一本与…
JVM运行时内存结构回顾 在JVM相关的介绍中,有说到JAVA运行时的内存结构,简单回顾下 整体结构如下图所示,大致分为五大块 而对于方法区中的数据,是属于所有线程共享的数据结构 而对于虚拟机栈中数据结构,则是线程独有的,被保存在线程私有的内存空间中,所以这部分数据不涉及线程安全的问题 不管是堆还是栈,他们都是保存在主内存中的 线程堆栈包含正在执行的每个方法的所有局部变量(调用堆栈上的所有方法).线程只能访问它自己的线程堆栈. 由线程创建的局部变量对于创建它的线程以外的所有其他线程是不可见的.…
Java高并发--原子性可见性有序性 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 原子性:指一个操作不可中断,一个线程一旦开始,直到执行完成都不会被其他线程干扰.换句话说原子性保证了任何时刻只有一个线程在对共享变量进行操作. 可见性:指当一个线程修改了某个共享变量的值,其他线程是否能立即知道这个修改. 有序性:一个线程观察其他线程中的指令,由于指令重排序的存在,该观察结果一般杂乱无序 原子性 AtomicInteger JDK的atomic包下提供了许多"原子…
JVM高级特性与实践(十三):线程实现 与 Java线程调度 JVM高级特性与实践(十四):线程安全 与 锁优化 一. 线程的实现 线程其实是比进程更轻量级的调度执行单位. 线程的引入,可以把一个检查的资源分配和执行调度分开,各个线程既可以共享资源(内存地址.文件I/O等),又可以独立调度(线程是CPU调度的基本单位). 线程实现 还是 Java线程实现? 主流的操作系统都有提供线程实现,Java语言则提供了不同硬件和操作系统平台下对线程操作的统一处理, 每个已经执行start() 且还未结束的…
JVM高级特性与实践(四):内存分配 与 回收策略 一. 内存分配 和 回收策略 1,对象内存分配的概念: 往大方向讲,它就是在堆上分配(但也可能经过JIT编译后被拆散为标量类型并间接地栈上分配), 对象主要分配在新生代的Eden区上,如果启动了局部线程分配缓冲,将按线程优先在TLAB上分配. 少数情况下也可能会直接分配在老年代中,分配的规则并不是百分之百固定的, 其细节取决于当前使用的是哪一种垃圾收集器组合,还有虚拟机中与内存有关的参数设置. 补充:线程TLAB局部缓存区域(Thread Lo…
JVM高级特性与实践(二):对象存活判定算法(引用) 与 回收 垃圾回收器GC(Garbage Collection) 于1960年诞生在MIT的Lisp是第一门真正使用内存动态分配和垃圾收集技术的语言. GC需要完成的3件事情: 哪些内存需要回收? 什么时候回收? 如何回收? 内存的动态分配与内存回收机制似乎“自动化”起来. 了解GC和内存分配等底层知识目的: 因为在排查各种内存溢出.内存泄漏问题.垃圾收集成为系统达到更高并发量的瓶颈时,需要对这些“自动化”技术实施必要的监控和调节. 一,Ja…
目录 概述 第一章: 走进Java 第二章: Java内存区域与内存溢出异常 第三章: 垃圾收集器与内存分配策略 第四章: 虚拟机性能监控与故障处理 第五章: 调优案例分析与实战 第六章: 类文件结构 第七章: 虚拟机类加载机制 第八章: 虚拟机字节码执行引擎 第九章: 类加载及执行子系统的案例 第十章: 早起(编译期)优化 第十一章: 晚期(运行期)优化 第十二章: Java内存模型与线程 第十三章: 线程安全与锁优化 概述 本文是笔记的目录. 书籍中是基于Java1.7的. 去网上找这本书,…
第一部分走近Java第1章走近Java21.1概述21.2Java技术体系31.3Java发展史51.4Java虚拟机发展史91.4.1SunClassicExactVM91.4.2SunHotSpotVM111.4.3SunMobile—EmbeddedVMMeta—CircularVM121.4.4BEAJRockitIBMJ9VM131.4.5AzulVMBEALiquidVM141.4.6ApacheHarmonyGoogleAndroidDalvikVM141.4.7Microsoft…
原子性 原子性是指一个操作或多个操作要么全部执行完成且执行过程不被中断,要么就不执行. 如向变量x赋值操作 x = 10 是原子性的,就不会出现赋值操作进行到一半(x的低16位赋值成功,高16位没有赋值)而被打断. 原子性的操作若涉及到变量,也意味着在操作过程中该变量不会被其他线程占有. 由java内存模型来直接保证的原子性变量操作包括read.load.use.assign.store和write,大致可认为基本数据类型的读写是具备原子性的(例外是long与double的非原子性协定). 如果…