1.1作用 防止指令重排 使得多线程下的共享资源能够独自修改使用。解决缓存不一致问题。 1.2相关知识 1.Java内存模型 1.3详解 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1.保证了不同线程对这个变量进行操作时的可见性,即一个线程修 ...
分类:
其他好文 时间:
2020-07-12 11:55:47
阅读次数:
60
1.1定义 在Java虚拟机规范中试图定义一种Java内存模型(Java Memory Model,JMM)来屏蔽各个硬件平台和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。那么Java内存模型规定了哪些东西呢,它定义了程序中变量的访问规则,往大一点说是定义了程 ...
分类:
编程语言 时间:
2020-07-12 10:27:57
阅读次数:
57
栈 1. 存放局部变量 2. 不可以被多个线程共享 3. 空间连续,速度快 堆 1. 存放对象 2. 可以被多个线程共享 3. 空间不连续,速度慢。但是灵活 方法区 1. 存放类的信息:代码、静态变量、字符串常量等 2. 可以被多个线程共享 3. 空间不连续,速度慢。但是灵活 ...
分类:
编程语言 时间:
2020-07-05 19:02:40
阅读次数:
64
OpenJ9 介绍 OpenJ9是一种高性能,可扩展的Java?虚拟机(VM)实现,完全符合Java虚拟机规范。 在运行时,VM解释由Java编译器编译的Java字节码。VM充当语言与底层操作系统和硬件之间的翻译器。Java程序需要特定的VM才能在特定的平台(例如Linux®,z /OS®或Wind ...
分类:
编程语言 时间:
2020-07-01 12:56:50
阅读次数:
60
Java内存泄漏 解释 内存泄漏: 存在一些被分配的对象,满足两个特点: 对象是可达的:在有向图中,存在通路与之相连. 对象是无用的:程序以后不再使用这些对象. 结果:消耗越来越多的内存资源,最终导致OutOfMemoryError。 与C++的区别: C++:对象被分配内存空间,却不可达. Jav ...
分类:
编程语言 时间:
2020-07-01 09:17:15
阅读次数:
66
1、内存结构: 2、根据《深入理解Java虚拟机》第二章整理知识点(xmind) ...
分类:
编程语言 时间:
2020-06-30 10:33:28
阅读次数:
48
理论+实战 构建完整JVM知识体系 对于Java开发而言,Java虚拟机是开发工作中必须要理解和掌握的知识内容,也是Java面试中面试官常会问到的考点。在本课程中,我将带你循序渐进的学习JVM:从源码到运行、类加载,再到内存分配和垃圾回收,以及JVM调优的技巧与实战。整个课程基于JDK13讲解,理论 ...
分类:
其他好文 时间:
2020-06-27 09:40:23
阅读次数:
396
目录 01.Java和线程 02.Java与协程 03.CPU缓存结构和java内存模型 04.管程-悲观锁和锁优化 05.乐观锁 - 无锁方案 06.线程安全 07.线程池 08.JUC 09.高并发测试 10.类加载器 Java与线程 线程的类型 线程是比进程更轻量级的调度执行单位,线程的引入, ...
分类:
编程语言 时间:
2020-06-26 18:45:04
阅读次数:
72
CPU 缓存结构原理 CPU 缓存结构 查看 cpu 缓存 速度比较 查看 cpu 缓存行 cpu 拿到的内存地址格式是这样的 CPU 缓存读 根据低位,计算在缓存中的索引 判断是否有效 0 去内存读取新数据更新缓存行 1 再对比高位组标记是否一致 一致,根据偏移量返回缓存数据 不一致,去内存读取新 ...
分类:
编程语言 时间:
2020-06-26 18:19:35
阅读次数:
78
##目录 多线程需要解决的问题 线程之间的通信 线程之间的同步 Java内存模型 内存间的交互操作 指令屏障 happens-before规则 指令重排序 从源程序到字节指令的重排序 as-if-serial语义 程序顺序规则 顺序一致性模型 顺序一致性模型特性 顺序一致性模型特性 当程序未正确同步 ...
分类:
编程语言 时间:
2020-06-22 01:23:32
阅读次数:
56