diff --git a/docs/database/Redis/images/redis-all/redis-list.png b/docs/database/Redis/images/redis-all/redis-list.png
index aa402549..59ec8312 100644
Binary files a/docs/database/Redis/images/redis-all/redis-list.png and b/docs/database/Redis/images/redis-all/redis-list.png differ
diff --git a/docs/database/Redis/images/redis-all/redis-rollBack.png b/docs/database/Redis/images/redis-all/redis-rollBack.png
index e59c908b..55a295df 100644
Binary files a/docs/database/Redis/images/redis-all/redis-rollBack.png and b/docs/database/Redis/images/redis-all/redis-rollBack.png differ
diff --git a/docs/database/Redis/images/redis-all/redis4.0-more-thread.png b/docs/database/Redis/images/redis-all/redis4.0-more-thread.png
index 66fd73bd..659b16ce 100644
Binary files a/docs/database/Redis/images/redis-all/redis4.0-more-thread.png and b/docs/database/Redis/images/redis-all/redis4.0-more-thread.png differ
diff --git a/docs/database/Redis/images/redis-all/redis事件处理器.png b/docs/database/Redis/images/redis-all/redis事件处理器.png
index 14c93456..f8875616 100644
Binary files a/docs/database/Redis/images/redis-all/redis事件处理器.png and b/docs/database/Redis/images/redis-all/redis事件处理器.png differ
diff --git a/docs/database/Redis/images/redis-all/redis事务.png b/docs/database/Redis/images/redis-all/redis事务.png
index 1573ab8f..8533d24f 100644
Binary files a/docs/database/Redis/images/redis-all/redis事务.png and b/docs/database/Redis/images/redis-all/redis事务.png differ
diff --git a/docs/database/Redis/images/redis-all/redis过期时间.png b/docs/database/Redis/images/redis-all/redis过期时间.png
index 9f9b3ac7..2076b722 100644
Binary files a/docs/database/Redis/images/redis-all/redis过期时间.png and b/docs/database/Redis/images/redis-all/redis过期时间.png differ
diff --git a/docs/database/Redis/images/redis-all/try-redis.png b/docs/database/Redis/images/redis-all/try-redis.png
index 379cc4c7..da12d5f8 100644
Binary files a/docs/database/Redis/images/redis-all/try-redis.png and b/docs/database/Redis/images/redis-all/try-redis.png differ
diff --git a/docs/database/Redis/images/redis-all/what-is-redis.png b/docs/database/Redis/images/redis-all/what-is-redis.png
index 06faab81..945ea830 100644
Binary files a/docs/database/Redis/images/redis-all/what-is-redis.png and b/docs/database/Redis/images/redis-all/what-is-redis.png differ
diff --git a/docs/database/Redis/images/redis-all/使用缓存之后.png b/docs/database/Redis/images/redis-all/使用缓存之后.png
index 344d7563..504a2589 100644
Binary files a/docs/database/Redis/images/redis-all/使用缓存之后.png and b/docs/database/Redis/images/redis-all/使用缓存之后.png differ
diff --git a/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png b/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png
index 75971fdc..507be5af 100644
Binary files a/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png and b/docs/database/Redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png differ
diff --git a/docs/database/Redis/images/redis-all/单体架构.png b/docs/database/Redis/images/redis-all/单体架构.png
index e45de090..83d481d6 100644
Binary files a/docs/database/Redis/images/redis-all/单体架构.png and b/docs/database/Redis/images/redis-all/单体架构.png differ
diff --git a/docs/database/Redis/images/redis-all/缓存的处理流程.png b/docs/database/Redis/images/redis-all/缓存的处理流程.png
index 3da7b113..de6e0c72 100644
Binary files a/docs/database/Redis/images/redis-all/缓存的处理流程.png and b/docs/database/Redis/images/redis-all/缓存的处理流程.png differ
diff --git a/docs/database/Redis/images/redis-all/缓存穿透情况.png b/docs/database/Redis/images/redis-all/缓存穿透情况.png
index 39c14ea1..b98d5f14 100644
Binary files a/docs/database/Redis/images/redis-all/缓存穿透情况.png and b/docs/database/Redis/images/redis-all/缓存穿透情况.png differ
diff --git a/docs/database/Redis/images/redis-all/集中式缓存架构.png b/docs/database/Redis/images/redis-all/集中式缓存架构.png
index a10756f7..661d218d 100644
Binary files a/docs/database/Redis/images/redis-all/集中式缓存架构.png and b/docs/database/Redis/images/redis-all/集中式缓存架构.png differ
diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-read.png b/docs/database/Redis/images/缓存读写策略/cache-aside-read.png
index 2bc157b6..ffa385f3 100644
Binary files a/docs/database/Redis/images/缓存读写策略/cache-aside-read.png and b/docs/database/Redis/images/缓存读写策略/cache-aside-read.png differ
diff --git a/docs/database/Redis/images/缓存读写策略/cache-aside-write.png b/docs/database/Redis/images/缓存读写策略/cache-aside-write.png
index 22620301..9a14b9e8 100644
Binary files a/docs/database/Redis/images/缓存读写策略/cache-aside-write.png and b/docs/database/Redis/images/缓存读写策略/cache-aside-write.png differ
diff --git a/docs/database/Redis/images/缓存读写策略/read-through.png b/docs/database/Redis/images/缓存读写策略/read-through.png
index 4437b70d..5712ad0e 100644
Binary files a/docs/database/Redis/images/缓存读写策略/read-through.png and b/docs/database/Redis/images/缓存读写策略/read-through.png differ
diff --git a/docs/database/Redis/images/缓存读写策略/write-through.png b/docs/database/Redis/images/缓存读写策略/write-through.png
index 34c70652..a988572d 100644
Binary files a/docs/database/Redis/images/缓存读写策略/write-through.png and b/docs/database/Redis/images/缓存读写策略/write-through.png differ
diff --git a/docs/database/redis/images/redis-all/redis-list.png b/docs/database/redis/images/redis-all/redis-list.png
index aa402549..59ec8312 100644
Binary files a/docs/database/redis/images/redis-all/redis-list.png and b/docs/database/redis/images/redis-all/redis-list.png differ
diff --git a/docs/database/redis/images/redis-all/redis-rollBack.png b/docs/database/redis/images/redis-all/redis-rollBack.png
index e59c908b..55a295df 100644
Binary files a/docs/database/redis/images/redis-all/redis-rollBack.png and b/docs/database/redis/images/redis-all/redis-rollBack.png differ
diff --git a/docs/database/redis/images/redis-all/redis4.0-more-thread.png b/docs/database/redis/images/redis-all/redis4.0-more-thread.png
index 66fd73bd..659b16ce 100644
Binary files a/docs/database/redis/images/redis-all/redis4.0-more-thread.png and b/docs/database/redis/images/redis-all/redis4.0-more-thread.png differ
diff --git a/docs/database/redis/images/redis-all/redis事件处理器.png b/docs/database/redis/images/redis-all/redis事件处理器.png
index 14c93456..f8875616 100644
Binary files a/docs/database/redis/images/redis-all/redis事件处理器.png and b/docs/database/redis/images/redis-all/redis事件处理器.png differ
diff --git a/docs/database/redis/images/redis-all/redis事务.png b/docs/database/redis/images/redis-all/redis事务.png
index 1573ab8f..8533d24f 100644
Binary files a/docs/database/redis/images/redis-all/redis事务.png and b/docs/database/redis/images/redis-all/redis事务.png differ
diff --git a/docs/database/redis/images/redis-all/redis过期时间.png b/docs/database/redis/images/redis-all/redis过期时间.png
index 9f9b3ac7..2076b722 100644
Binary files a/docs/database/redis/images/redis-all/redis过期时间.png and b/docs/database/redis/images/redis-all/redis过期时间.png differ
diff --git a/docs/database/redis/images/redis-all/try-redis.png b/docs/database/redis/images/redis-all/try-redis.png
index 379cc4c7..da12d5f8 100644
Binary files a/docs/database/redis/images/redis-all/try-redis.png and b/docs/database/redis/images/redis-all/try-redis.png differ
diff --git a/docs/database/redis/images/redis-all/what-is-redis.png b/docs/database/redis/images/redis-all/what-is-redis.png
index 06faab81..945ea830 100644
Binary files a/docs/database/redis/images/redis-all/what-is-redis.png and b/docs/database/redis/images/redis-all/what-is-redis.png differ
diff --git a/docs/database/redis/images/redis-all/使用缓存之后.png b/docs/database/redis/images/redis-all/使用缓存之后.png
index 344d7563..504a2589 100644
Binary files a/docs/database/redis/images/redis-all/使用缓存之后.png and b/docs/database/redis/images/redis-all/使用缓存之后.png differ
diff --git a/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png b/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png
index 75971fdc..507be5af 100644
Binary files a/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png and b/docs/database/redis/images/redis-all/加入布隆过滤器后的缓存处理流程.png differ
diff --git a/docs/database/redis/images/redis-all/单体架构.png b/docs/database/redis/images/redis-all/单体架构.png
index e45de090..83d481d6 100644
Binary files a/docs/database/redis/images/redis-all/单体架构.png and b/docs/database/redis/images/redis-all/单体架构.png differ
diff --git a/docs/database/redis/images/redis-all/缓存的处理流程.png b/docs/database/redis/images/redis-all/缓存的处理流程.png
index 3da7b113..de6e0c72 100644
Binary files a/docs/database/redis/images/redis-all/缓存的处理流程.png and b/docs/database/redis/images/redis-all/缓存的处理流程.png differ
diff --git a/docs/database/redis/images/redis-all/缓存穿透情况.png b/docs/database/redis/images/redis-all/缓存穿透情况.png
index 39c14ea1..b98d5f14 100644
Binary files a/docs/database/redis/images/redis-all/缓存穿透情况.png and b/docs/database/redis/images/redis-all/缓存穿透情况.png differ
diff --git a/docs/database/redis/images/redis-all/集中式缓存架构.png b/docs/database/redis/images/redis-all/集中式缓存架构.png
index a10756f7..661d218d 100644
Binary files a/docs/database/redis/images/redis-all/集中式缓存架构.png and b/docs/database/redis/images/redis-all/集中式缓存架构.png differ
diff --git a/docs/database/redis/images/缓存读写策略/cache-aside-read.png b/docs/database/redis/images/缓存读写策略/cache-aside-read.png
index 2bc157b6..ffa385f3 100644
Binary files a/docs/database/redis/images/缓存读写策略/cache-aside-read.png and b/docs/database/redis/images/缓存读写策略/cache-aside-read.png differ
diff --git a/docs/database/redis/images/缓存读写策略/cache-aside-write.png b/docs/database/redis/images/缓存读写策略/cache-aside-write.png
index 22620301..9a14b9e8 100644
Binary files a/docs/database/redis/images/缓存读写策略/cache-aside-write.png and b/docs/database/redis/images/缓存读写策略/cache-aside-write.png differ
diff --git a/docs/database/redis/images/缓存读写策略/read-through.png b/docs/database/redis/images/缓存读写策略/read-through.png
index 4437b70d..5712ad0e 100644
Binary files a/docs/database/redis/images/缓存读写策略/read-through.png and b/docs/database/redis/images/缓存读写策略/read-through.png differ
diff --git a/docs/database/redis/images/缓存读写策略/write-through.png b/docs/database/redis/images/缓存读写策略/write-through.png
index 34c70652..a988572d 100644
Binary files a/docs/database/redis/images/缓存读写策略/write-through.png and b/docs/database/redis/images/缓存读写策略/write-through.png differ
diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png
index e30ec75b..f23018f4 100644
Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/curator.png differ
diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png
index 721fc971..c85c4501 100644
Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/watche机制.png differ
diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png
index 536e9459..0f2c9d6c 100644
Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/znode-structure.png differ
diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png
index 8a5bfe9d..adbfd089 100644
Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群.png differ
diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png
index d3aa4df8..ee956a12 100644
Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/zookeeper集群中的角色.png differ
diff --git a/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png b/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png
index 931fed2b..6f70c137 100644
Binary files a/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png and b/docs/distributed-system/distributed-process-coordination/zookeeper/images/连接ZooKeeper服务.png differ
diff --git a/docs/home.md b/docs/home.md
index 20671de3..eee0cc91 100644
--- a/docs/home.md
+++ b/docs/home.md
@@ -47,6 +47,7 @@ title: JavaGuide(Java学习&&面试指南)
## 待办
+- [ ] JVM 部分内容更新完善
- [ ] 计算机网络知识点完善
- [ ] 分布式常见理论和算法总结完善
diff --git a/docs/java/basis/images/checked-exception.png b/docs/java/basis/images/checked-exception.png
index f9e79e58..aee555bb 100644
Binary files a/docs/java/basis/images/checked-exception.png and b/docs/java/basis/images/checked-exception.png differ
diff --git a/docs/java/basis/images/image-20211213102222601.png b/docs/java/basis/images/image-20211213102222601.png
index 5984d685..afcd47b2 100644
Binary files a/docs/java/basis/images/image-20211213102222601.png and b/docs/java/basis/images/image-20211213102222601.png differ
diff --git a/docs/java/basis/images/java-value-passing-01.png b/docs/java/basis/images/java-value-passing-01.png
index 7aced204..e205f396 100644
Binary files a/docs/java/basis/images/java-value-passing-01.png and b/docs/java/basis/images/java-value-passing-01.png differ
diff --git a/docs/java/basis/images/java-value-passing-02.png b/docs/java/basis/images/java-value-passing-02.png
index 8d961f17..2f8467cb 100644
Binary files a/docs/java/basis/images/java-value-passing-02.png and b/docs/java/basis/images/java-value-passing-02.png differ
diff --git a/docs/java/basis/images/java-value-passing-03.png b/docs/java/basis/images/java-value-passing-03.png
index e2b5eb17..e3aa3dd6 100644
Binary files a/docs/java/basis/images/java-value-passing-03.png and b/docs/java/basis/images/java-value-passing-03.png differ
diff --git a/docs/java/basis/images/java程序转变为机器代码的过程.png b/docs/java/basis/images/java程序转变为机器代码的过程.png
index c9dd8df9..3cd7b05f 100644
Binary files a/docs/java/basis/images/java程序转变为机器代码的过程.png and b/docs/java/basis/images/java程序转变为机器代码的过程.png differ
diff --git a/docs/java/basis/images/shallow&deep-copy.png b/docs/java/basis/images/shallow&deep-copy.png
index 625f67ca..85fa3fd5 100644
Binary files a/docs/java/basis/images/shallow&deep-copy.png and b/docs/java/basis/images/shallow&deep-copy.png differ
diff --git a/docs/java/basis/images/types-of-exceptions-in-java.png b/docs/java/basis/images/types-of-exceptions-in-java.png
index 274c6421..99deb423 100644
Binary files a/docs/java/basis/images/types-of-exceptions-in-java.png and b/docs/java/basis/images/types-of-exceptions-in-java.png differ
diff --git a/docs/java/basis/images/unchecked-exception.png b/docs/java/basis/images/unchecked-exception.png
index da4eee3d..3fe38b0b 100644
Binary files a/docs/java/basis/images/unchecked-exception.png and b/docs/java/basis/images/unchecked-exception.png differ
diff --git a/docs/java/basis/images/编译型语言和解释型语言.png b/docs/java/basis/images/编译型语言和解释型语言.png
index ec4e5989..f97298f5 100644
Binary files a/docs/java/basis/images/编译型语言和解释型语言.png and b/docs/java/basis/images/编译型语言和解释型语言.png differ
diff --git a/docs/java/basis/java-basic-questions-01.md b/docs/java/basis/java-basic-questions-01.md
index 32330422..8b43739b 100644
--- a/docs/java/basis/java-basic-questions-01.md
+++ b/docs/java/basis/java-basic-questions-01.md
@@ -1,5 +1,5 @@
---
-title: Java基础知识&面试题总结(上)
+title: Java基础常见知识&面试题总结(上)
category: Java
tag:
- Java基础
diff --git a/docs/java/basis/java-basic-questions-02.md b/docs/java/basis/java-basic-questions-02.md
index bd610f4e..51fac821 100644
--- a/docs/java/basis/java-basic-questions-02.md
+++ b/docs/java/basis/java-basic-questions-02.md
@@ -1,5 +1,5 @@
---
-title: Java基础知识&面试题总结(中)
+title: Java基础常见知识&面试题总结(中)
category: Java
tag:
- Java基础
diff --git a/docs/java/collection/images/77c95eb733284dbd8ce4e85c9cb6b042.png b/docs/java/collection/images/77c95eb733284dbd8ce4e85c9cb6b042.png
deleted file mode 100644
index 30940c7a..00000000
Binary files a/docs/java/collection/images/77c95eb733284dbd8ce4e85c9cb6b042.png and /dev/null differ
diff --git a/docs/java/collection/images/Java-Collections.jpeg b/docs/java/collection/images/Java-Collections.jpeg
deleted file mode 100644
index d1f163a2..00000000
Binary files a/docs/java/collection/images/Java-Collections.jpeg and /dev/null differ
diff --git a/docs/java/collection/images/TreeMap继承结构.png b/docs/java/collection/images/TreeMap继承结构.png
old mode 100644
new mode 100755
index bd8ef48e..b423f999
Binary files a/docs/java/collection/images/TreeMap继承结构.png and b/docs/java/collection/images/TreeMap继承结构.png differ
diff --git a/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png b/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png
old mode 100644
new mode 100755
index 64ae2293..8d802d64
Binary files a/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png and b/docs/java/collection/images/ad28e3ba-e419-4724-869c-73879e604da1.png differ
diff --git a/docs/java/collection/images/image-20200405151029416.png b/docs/java/collection/images/image-20200405151029416.png
old mode 100644
new mode 100755
index 2ff9de4d..e8f6a240
Binary files a/docs/java/collection/images/image-20200405151029416.png and b/docs/java/collection/images/image-20200405151029416.png differ
diff --git a/docs/java/collection/images/java-collection-hierarchy.png b/docs/java/collection/images/java-collection-hierarchy.png
old mode 100644
new mode 100755
index d5084585..84c470a1
Binary files a/docs/java/collection/images/java-collection-hierarchy.png and b/docs/java/collection/images/java-collection-hierarchy.png differ
diff --git a/docs/java/collection/images/java8_concurrenthashmap.png b/docs/java/collection/images/java8_concurrenthashmap.png
old mode 100644
new mode 100755
index 60b7c5f5..604c4931
Binary files a/docs/java/collection/images/java8_concurrenthashmap.png and b/docs/java/collection/images/java8_concurrenthashmap.png differ
diff --git a/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png b/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png
old mode 100644
new mode 100755
index 30940c7a..df7fe678
Binary files a/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png and b/docs/java/collection/images/jdk1.8之前的内部结构-HashMap.png differ
diff --git a/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png b/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png
old mode 100644
new mode 100755
index 900f8233..1228048a
Binary files a/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png and b/docs/java/collection/images/jdk1.8之后的内部结构-HashMap.png differ
diff --git a/docs/java/collection/images/linkedlist/LinkedList内部结构.png b/docs/java/collection/images/linkedlist/LinkedList内部结构.png
deleted file mode 100644
index 75fc77f1..00000000
Binary files a/docs/java/collection/images/linkedlist/LinkedList内部结构.png and /dev/null differ
diff --git a/docs/java/collection/java-collection-questions-01.md b/docs/java/collection/java-collection-questions-01.md
index b981fe02..c91861aa 100644
--- a/docs/java/collection/java-collection-questions-01.md
+++ b/docs/java/collection/java-collection-questions-01.md
@@ -1,5 +1,5 @@
---
-title: Java集合知识点&面试题总结(上)
+title: Java集合常见知识点&面试题总结(上)
category: Java
tag:
- Java集合
diff --git a/docs/java/collection/java-collection-questions-02.md b/docs/java/collection/java-collection-questions-02.md
index bd7eee4c..cbff98a6 100644
--- a/docs/java/collection/java-collection-questions-02.md
+++ b/docs/java/collection/java-collection-questions-02.md
@@ -1,5 +1,5 @@
---
-title: Java集合知识点&面试题总结(下)
+title: Java集合常见知识点&面试题总结(下)
category: Java
tag:
- Java集合
diff --git a/docs/java/concurrent/images/ThreadLocal内部类.png b/docs/java/concurrent/images/ThreadLocal内部类.png
index 28575544..c6c2bf73 100644
Binary files a/docs/java/concurrent/images/ThreadLocal内部类.png and b/docs/java/concurrent/images/ThreadLocal内部类.png differ
diff --git a/docs/java/concurrent/images/interview-questions/cpu-cache.drawio b/docs/java/concurrent/images/interview-questions/cpu-cache.drawio
new file mode 100644
index 00000000..4121eaff
--- /dev/null
+++ b/docs/java/concurrent/images/interview-questions/cpu-cache.drawio
@@ -0,0 +1 @@
+7VnZcqM4FP0aHuMChFgevSaVmtSk2jPVPY8K3IAqGLmFHDv99S2BMKuzTJp2ajLJg9HRfs/RPSwGmm8Ol5xskxsWQWrYZnQw0MKwbcsyXfmjkKcSCQKvBGJOI92oBtb0B2jQ1OiORpC3GgrGUkG3bTBkWQahaGGEc7ZvN7tnaXvWLYmhB6xDkvbRrzQSSYn6tlfjV0DjpJrZcoOyZkOqxnoneUIitm9AaGmgOWdMlFebwxxSFbwqLmW/1Yna48I4ZOI1Hf76sb6Jrtj+Kvy+/jP6I/+Kr/0LuxzlkaQ7vWG9WPFURYCzXRaBGsQy0GyfUAHrLQlV7V5yLrFEbFJdfc8yoUmUy5FlmqZzljJejIXu/RDCUOK54OwBGjV3Pnaw6pE/gAgTPdwxZqpGLxW4gMPJGFjHyEpJAtuA4E+ySa3HsotW41Fm+5pb29FY0uQ10CDReoqPY9chlxc66m9gAPUYmN/+LYEvENNcAM/fSUibALAiDN4QAYHrIeJ2CWjwafljEILbhKABQix3gBBvLD4sr38kltjwsTGdG0vHmM0NmcIUsjJm8mJVINNr8kguVa4ybDeVa5zd8RZr7vedOuhFQC/yIqJT2cByt4ciklW9vIqLXzXVwgjknL7hm2r+aqpyGrmCABlT3JOHJEO0NdDmOmMZdIShIZLSOJPFUJIHEp8paqnMhVNdsaFRpKYZFF0tS6WNlNxBOiPhQ1zg3ckbsnJ1uaHFWfFfjCmIoEzNfYFGzw5HUWkxunhAjP5QdhhNjMFwdviQlHdz/7iZ3O9kcjTAlTnAFRqLq8rnP4uXOgh/NC+tNvFJzdTx2oyc30yrI/B//upyhc3O6Tl//jp1JzonYQLvOzi9A4JcFKCof6RWq+nCWT1zcEpmRn4scILXprLRnN92Pi0bXWP5CGzgl70dsmiqXjiobJSSPKelNxMu+vAzLg8HKr6pYE6wHejyP0XZNKvy4qCjXRSeGoVb4FRuWaXCxQluIOq98egwI7fFdjyEF5NFn8IGRXiAoQrjkMr7+sf2OoZY0zPcMipXWN+od84rNjvEl+vXvZrvRLoDIa8ttSorVwNJ+mIQvYEKER23/Q5duefQVVNVzypqNPU451QPxs7kRIZ5q36KoZyOhJyJaf1eFfVfWdwQmknkBjZMp78R3OL1rtDzlaXt41/l3W0uvYGbXjx00zuiW/Sf2sc/1bbZdIsLaRe293HswjurXdjBRFpE/YdainF9PAmCf2kgauh2AnC7ZjTy6UeveO/wH1Lb+VzDndgnUs3bbQNNOs/qrmlPqk9j7xaOLNbflcrm9dc5tPwJ
\ No newline at end of file
diff --git a/docs/java/concurrent/images/interview-questions/cpu-cache.png b/docs/java/concurrent/images/interview-questions/cpu-cache.png
new file mode 100755
index 00000000..9683a104
Binary files /dev/null and b/docs/java/concurrent/images/interview-questions/cpu-cache.png differ
diff --git a/docs/java/concurrent/images/interview-questions/jmm.drawio b/docs/java/concurrent/images/interview-questions/jmm.drawio
new file mode 100644
index 00000000..c9c642fa
--- /dev/null
+++ b/docs/java/concurrent/images/interview-questions/jmm.drawio
@@ -0,0 +1 @@
+7Vpbc5s6EP41ekwGIS7iEXxJpzOdZprpnNNHBWSbCSAHy7HdX18JhLnJDZnajp02ebC0Eiv0fbvaXQCgUbq9y8ly8YVFNAGmEW0BGgPThNBwxI+U7EqJ57mlYJ7HkZpUCx7in1QJDSVdxxFdtSZyxhIeL9vCkGUZDXlLRvKcbdrTZixpr7okc9oTPIQk6Uv/iyO+KKXYdGv5JxrPF9XK0PHKkZRUk9VOVgsSsU1DhCYAjXLGeNlKtyOaSPAqXMrrpgdG9zeW04wPuYB8+vYjS9P07jn79uX+6TucPH+9qWB+Icla7VjdLd9VEORsnUVUaoEABZtFzOnDkoRydCNIF7IFTxM1PGMZVyyK+xH9OElGLGF5oQtFhOJZKOQrnrMn2hhxQkwfZ3LkifJwodSpu6M5p9uD+4Z7NIUZUpZSnu/EFHWBVRGgLBBaqr+p+TQr2aLBJUJKSJQNzfe6a5hFQyH9BtS9Dw86hBcHunls0NsgUxjZ1NWB7DkuIs4pQLbbICPYBxk6GpDhyUBGfZAnDvBGwB+BiS0bgSEb2AHYlg1/DDzcI0Jgwttot1HNWEY7FCgRSeJ5JrqhwJAKeSARjsV57quBNI4iuYyW3toADI1bHZ0/3OFP4yTQ0DnJqeizP5yPWM7F+Yjzz0fewJ93aT7iauhzQeCDYCobPgY4gD22hGKRsh7CdHgsn82oE2pjeeR6j8ZJjim3E8tdDQWmhgJ8KgrwAAr6J9cVU2DhS6MAwtdDBc0iX5Zg8qhJyGoVl6CRnPfFv4FfYJTv/pfnza1ddX+ouUVnvFWHUdnbqZ6GBBr1qr0OBWIDbJ2H9PVEUuxjTvlrB0Wf0gZltoaxSpbThPD4pX27OhrVCvcsFhvZW4zZScB7eXW5TXVVs2zsKuoE0J5JlTj0FBVWtd/2HxjagLz9Gg3tvQzDRt6trU+J3moafVX7mzyXcWjqjT9KWHtHOnKQh6J+EJhO/bE1PUPlbNv9o97W2cfpElZoaeKtBQIMguBforqtDti2K9i6EH3WRBVqqjnJlg1Efir584Ff8jeVtE08gF3ZPuxAxgAHasJ6yGe6XBzDbTphytHUeZ4Gfetk6OvKvI+KPjKtC0NfV6V9VPRt49JsX1egDUBfSjzgT+vnIVfJB8SdBAsP46ObPB2PD80Lh7+ID8u7MD6qSv1aahq6jXmpwzRM1ZdKboxbw8BKUCuSnV2jc0/zWAAnM7hxTelRavGyAHi3IrvzatHunqiDi+yOIss9bx1lXtnTnHcyyPer2eGt4TX+2lbXPaeG1+9dqxPLWOc1PM3TnTIyyZchIjKNgOeqyBSIxrSQ+J/JC7mTX4YA00lkcfmYt4zVeV7LzyoK47tZFdbniwnQWW4Luqtx0ZoXv3KpsYxxEwxEdJDlrFqqXEa+l0HAt3tecRnFbUIeaRKQ8GleyLuL1y4IHdVvhN6g+C90cmGlTK59g05RIwtTbRucp6mRscaPuk+oBkRi0a2/rSnNtf5CCU1+AQ==
\ No newline at end of file
diff --git a/docs/java/concurrent/images/interview-questions/jmm.png b/docs/java/concurrent/images/interview-questions/jmm.png
new file mode 100755
index 00000000..adb09336
Binary files /dev/null and b/docs/java/concurrent/images/interview-questions/jmm.png differ
diff --git a/docs/java/concurrent/images/interview-questions/jmm2.drawio b/docs/java/concurrent/images/interview-questions/jmm2.drawio
new file mode 100644
index 00000000..ee36a4da
--- /dev/null
+++ b/docs/java/concurrent/images/interview-questions/jmm2.drawio
@@ -0,0 +1 @@
+7Vpbk6MoGP01PHaXiKI+ahLnVls1u/2wM4+0EnXbSMaQTrK/fkEx3kgqvRN7Mj1TeQgckMs5fB98IkCz1f5dSdbpHyymOTCNeA/QHJgmtKAn/iRyqBHPc2ogKbNYVWqBh+xfqkBDodssppteRc5YzrN1H4xYUdCI9zBSlmzXr7Zkeb/XNUnoCHiISD5G/85intaoazot/p5mSdr0DLGa8Io0ldVMNimJ2a4DoQVAs5IxXqdW+xnNJXkNL/Vz4YnS48BKWvBLHjD9L1v7T/YXRvifT19D1/sQeHeqlWeSb9WE1WD5oWGgZNsiprIRCFCwSzNOH9YkkqU7obnAUr7KVfGSFVyJKIYj8lmez1jOyqotFBPqLiOBb3jJnminBEcufVzKkifKo1Q1p0ZHS073J6cNj2SKVUjZivLyIKqoB6yG/0OzJFV+18ppNljakRIhBRK1hJJj2y3LIqGIfgHp5psnHcKbIx1dm/Q+yRTGNnV0JHvYQQRPQbLdJxnBMckQa0iGk5FsjUleYODNgD8DC1smAkMmXAxcWyb8OfDckRCCE95nu89qwQo6kEBBJM+SQmQjwSEVeCAZzoQ791XBKotj2Y1W3nYBGBqzurp+7kA/jZFAQ2ckU8lnvzkbsfDN2Qj+bSMv0M+7NRtxNPI5IPBBEMqE7wI3gCO1RMPixHqK08v38uWS4ki7l8eO92hM4qacwV7uaCQwNRK4U0ngXiDB2HP9xBJY7q1JAK8dOIzIRBh5KB7TH4b+3Apf4cxq22OSj9jrbBVQEyksLBC4IAh+bxHqAYTsvm4643jVLQJqYg2plg3EziD184Ff6xdK2RYecB2ZPm1AxgUG1KX1lM0MtbiG2QxOWFhzwvI07FuTsa8LQt4q+8i0box9TQzxZtm3jVtb+7rg4gL2JeIBP2wjkZ9SD+j2twLkXqaHPZkeumjh19HD8m5ND03oMIoTitiXFwfy+JOTzSarz/qk5GP4TNTQ45zGCX1QXbCSpyxhBckXLRrQfca/KDVl+qtM39sqN993iuYHlamHLts+r4+YHtuWET1HTHO3QsqE8jMVHb3g3TPyGUFLmhOePffHq1NZ9fCZZWImx/U0CIPw0I/W01QPmZ2rkEE7wysBb9BOzcKoHaE/OXSqrWWFzenhmsPdwX7JqJorsHa91/23q//I/3dcRRinHJR8GyUc1Ax4jnJQgUiEFeJ/JM/knbyZAybOZYzxWPaMCH/bymutyijuNpVV+KICxOt9tW6bcpFKqn/Z1Vy6uoUI3o0qqlFd1d3IF2MI+PbIWm8jxsnJI80DEj0lFT7svHUNEKt8xwMH1a9qkwvrYLLvOzRFqCTi194SO75d64ZKrsZ+4VQO2bzgPcKPdcjw3jDMvlO2rbNuWWY+0zITDMl1NY2r/lEu2LYGTs34nz4YD87OpoHum28DruyHnWGIqhbZqaEN65uG9T2eWGTbW/66evutBFr8Bw==
\ No newline at end of file
diff --git a/docs/java/concurrent/images/interview-questions/jmm2.png b/docs/java/concurrent/images/interview-questions/jmm2.png
new file mode 100755
index 00000000..bdb1b41d
Binary files /dev/null and b/docs/java/concurrent/images/interview-questions/jmm2.png differ
diff --git a/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png b/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png
old mode 100644
new mode 100755
index d6c23ab3..df596f5a
Binary files a/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png and b/docs/java/concurrent/images/interview-questions/synchronized-get-lock-code-block.png differ
diff --git a/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png b/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png
old mode 100644
new mode 100755
index c80a0030..7123b2e6
Binary files a/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png and b/docs/java/concurrent/images/interview-questions/synchronized-release-lock-block.png differ
diff --git a/docs/java/concurrent/images/interview-questions/synchronized关键字.png b/docs/java/concurrent/images/interview-questions/synchronized关键字.png
deleted file mode 100644
index d08bf407..00000000
Binary files a/docs/java/concurrent/images/interview-questions/synchronized关键字.png and /dev/null differ
diff --git a/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png b/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png
index 31aee8af..5f69421d 100644
Binary files a/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png and b/docs/java/concurrent/images/java-thread-pool-summary/Executor框架的使用示意图.png differ
diff --git a/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png b/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png
index 0d610565..a4534876 100644
Binary files a/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png and b/docs/java/concurrent/images/java-thread-pool-summary/ScheduledThreadPoolExecutor执行周期任务步骤.png differ
diff --git a/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png b/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png
index 4726b8f1..d760b225 100644
Binary files a/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png and b/docs/java/concurrent/images/java-thread-pool-summary/图解线程池实现原理.png differ
diff --git a/docs/java/concurrent/images/thread-local/1.png b/docs/java/concurrent/images/thread-local/1.png
index b4d4d14a..88aaa95b 100644
Binary files a/docs/java/concurrent/images/thread-local/1.png and b/docs/java/concurrent/images/thread-local/1.png differ
diff --git a/docs/java/concurrent/images/thread-local/11.png b/docs/java/concurrent/images/thread-local/11.png
index f9f5e250..66da70a8 100644
Binary files a/docs/java/concurrent/images/thread-local/11.png and b/docs/java/concurrent/images/thread-local/11.png differ
diff --git a/docs/java/concurrent/images/thread-local/12.png b/docs/java/concurrent/images/thread-local/12.png
index e8fe8330..85b054a7 100644
Binary files a/docs/java/concurrent/images/thread-local/12.png and b/docs/java/concurrent/images/thread-local/12.png differ
diff --git a/docs/java/concurrent/images/thread-local/13.png b/docs/java/concurrent/images/thread-local/13.png
index 57ff8e04..7762127c 100644
Binary files a/docs/java/concurrent/images/thread-local/13.png and b/docs/java/concurrent/images/thread-local/13.png differ
diff --git a/docs/java/concurrent/images/thread-local/15.png b/docs/java/concurrent/images/thread-local/15.png
index 72831243..ef1fb1bc 100644
Binary files a/docs/java/concurrent/images/thread-local/15.png and b/docs/java/concurrent/images/thread-local/15.png differ
diff --git a/docs/java/concurrent/images/thread-local/16.png b/docs/java/concurrent/images/thread-local/16.png
index 1ef0c0e6..2400a706 100644
Binary files a/docs/java/concurrent/images/thread-local/16.png and b/docs/java/concurrent/images/thread-local/16.png differ
diff --git a/docs/java/concurrent/images/thread-local/17.png b/docs/java/concurrent/images/thread-local/17.png
index 31059398..64929698 100644
Binary files a/docs/java/concurrent/images/thread-local/17.png and b/docs/java/concurrent/images/thread-local/17.png differ
diff --git a/docs/java/concurrent/images/thread-local/18.png b/docs/java/concurrent/images/thread-local/18.png
index be7fd443..075cd3d7 100644
Binary files a/docs/java/concurrent/images/thread-local/18.png and b/docs/java/concurrent/images/thread-local/18.png differ
diff --git a/docs/java/concurrent/images/thread-local/19.png b/docs/java/concurrent/images/thread-local/19.png
index 13e64e3d..ba9ede43 100644
Binary files a/docs/java/concurrent/images/thread-local/19.png and b/docs/java/concurrent/images/thread-local/19.png differ
diff --git a/docs/java/concurrent/images/thread-local/2.png b/docs/java/concurrent/images/thread-local/2.png
index b1d100a2..a65239b0 100644
Binary files a/docs/java/concurrent/images/thread-local/2.png and b/docs/java/concurrent/images/thread-local/2.png differ
diff --git a/docs/java/concurrent/images/thread-local/21.png b/docs/java/concurrent/images/thread-local/21.png
index 85b7c6ea..d967ac51 100644
Binary files a/docs/java/concurrent/images/thread-local/21.png and b/docs/java/concurrent/images/thread-local/21.png differ
diff --git a/docs/java/concurrent/images/thread-local/22.png b/docs/java/concurrent/images/thread-local/22.png
index b04c4c9a..3c612f4a 100644
Binary files a/docs/java/concurrent/images/thread-local/22.png and b/docs/java/concurrent/images/thread-local/22.png differ
diff --git a/docs/java/concurrent/images/thread-local/23.png b/docs/java/concurrent/images/thread-local/23.png
index b8b49d5e..8583037c 100644
Binary files a/docs/java/concurrent/images/thread-local/23.png and b/docs/java/concurrent/images/thread-local/23.png differ
diff --git a/docs/java/concurrent/images/thread-local/24.png b/docs/java/concurrent/images/thread-local/24.png
index f9bf9c41..90889b1a 100644
Binary files a/docs/java/concurrent/images/thread-local/24.png and b/docs/java/concurrent/images/thread-local/24.png differ
diff --git a/docs/java/concurrent/images/thread-local/25.png b/docs/java/concurrent/images/thread-local/25.png
index b14292b0..375878ce 100644
Binary files a/docs/java/concurrent/images/thread-local/25.png and b/docs/java/concurrent/images/thread-local/25.png differ
diff --git a/docs/java/concurrent/images/thread-local/26.png b/docs/java/concurrent/images/thread-local/26.png
index 013e0be9..8cef06a0 100644
Binary files a/docs/java/concurrent/images/thread-local/26.png and b/docs/java/concurrent/images/thread-local/26.png differ
diff --git a/docs/java/concurrent/images/thread-local/28.png b/docs/java/concurrent/images/thread-local/28.png
index 0c3d71a2..48a4682a 100644
Binary files a/docs/java/concurrent/images/thread-local/28.png and b/docs/java/concurrent/images/thread-local/28.png differ
diff --git a/docs/java/concurrent/images/thread-local/29.png b/docs/java/concurrent/images/thread-local/29.png
index 397be0d4..5d206650 100644
Binary files a/docs/java/concurrent/images/thread-local/29.png and b/docs/java/concurrent/images/thread-local/29.png differ
diff --git a/docs/java/concurrent/images/thread-local/3.png b/docs/java/concurrent/images/thread-local/3.png
index f778e466..54322811 100644
Binary files a/docs/java/concurrent/images/thread-local/3.png and b/docs/java/concurrent/images/thread-local/3.png differ
diff --git a/docs/java/concurrent/images/thread-local/4.png b/docs/java/concurrent/images/thread-local/4.png
index 3cc55add..ffec6b72 100644
Binary files a/docs/java/concurrent/images/thread-local/4.png and b/docs/java/concurrent/images/thread-local/4.png differ
diff --git a/docs/java/concurrent/images/thread-local/5.png b/docs/java/concurrent/images/thread-local/5.png
index 908f5e60..c4a64c4d 100644
Binary files a/docs/java/concurrent/images/thread-local/5.png and b/docs/java/concurrent/images/thread-local/5.png differ
diff --git a/docs/java/concurrent/images/thread-local/6.png b/docs/java/concurrent/images/thread-local/6.png
index f0639dca..5fded6be 100644
Binary files a/docs/java/concurrent/images/thread-local/6.png and b/docs/java/concurrent/images/thread-local/6.png differ
diff --git a/docs/java/concurrent/images/thread-local/7.png b/docs/java/concurrent/images/thread-local/7.png
index 40ece77b..bed724cd 100644
Binary files a/docs/java/concurrent/images/thread-local/7.png and b/docs/java/concurrent/images/thread-local/7.png differ
diff --git a/docs/java/concurrent/images/thread-local/8.png b/docs/java/concurrent/images/thread-local/8.png
index db614fca..3844930f 100644
Binary files a/docs/java/concurrent/images/thread-local/8.png and b/docs/java/concurrent/images/thread-local/8.png differ
diff --git a/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png b/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png
index 1d1a4ac0..a2dbfbad 100644
Binary files a/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png and b/docs/java/concurrent/images/thread-pool/1bc44c67-26ba-42ab-bcb8-4e29e6fd99b9.png differ
diff --git a/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png b/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png
index 366604fa..fc3a96f1 100644
Binary files a/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png and b/docs/java/concurrent/images/thread-pool/b6fd95a7-4c9d-4fc6-ad26-890adb3f6c4c.png differ
diff --git a/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png b/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png
index af2010b7..996c13f9 100644
Binary files a/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png and b/docs/java/concurrent/images/thread-pool/ddf22709-bff5-45b4-acb7-a3f2e6798608.png differ
diff --git a/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png b/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png
index eda63f3f..13c55716 100644
Binary files a/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png and b/docs/java/concurrent/images/thread-pool/线程池使用不当导致死锁.png differ
diff --git a/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png b/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png
index 06ac186c..e689b51a 100644
Binary files a/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png and b/docs/java/concurrent/images/多线程学习指南/Java并发编程的艺术.png differ
diff --git a/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png b/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png
index b604dcbc..feccf139 100644
Binary files a/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png and b/docs/java/concurrent/images/多线程学习指南/javaguide-并发.png differ
diff --git a/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png b/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png
index 5649ca03..7c0a862b 100644
Binary files a/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png and b/docs/java/concurrent/images/多线程学习指南/java并发编程之美.png differ
diff --git a/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png b/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png
index 0344590f..bb22b479 100644
Binary files a/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png and b/docs/java/concurrent/images/多线程学习指南/实战Java高并发程序设计.png differ
diff --git a/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png b/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png
index b1f00e0b..ce1761dd 100644
Binary files a/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png and b/docs/java/concurrent/images/多线程学习指南/深入浅出Java多线程.png differ
diff --git a/docs/java/concurrent/java-concurrent-questions-02.md b/docs/java/concurrent/java-concurrent-questions-02.md
index a3352ee6..abaa3e0d 100644
--- a/docs/java/concurrent/java-concurrent-questions-02.md
+++ b/docs/java/concurrent/java-concurrent-questions-02.md
@@ -7,8 +7,6 @@ tag:
## 1.synchronized 关键字
-
-
### 1.1.说一说自己对于 synchronized 关键字的了解
**`synchronized` 关键字解决的是多个线程之间访问资源的同步性,`synchronized`关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。**
@@ -220,7 +218,7 @@ JDK1.6 对锁的实现引入了大量的优化,如偏向锁、轻量级锁、
为了更好地理解,我画了一个简单的 CPU Cache 示意图如下(实际上,现代的 CPU Cache 通常分为三层,分别叫 L1,L2,L3 Cache):
-
+
**CPU Cache 的工作方式:**
@@ -230,15 +228,20 @@ JDK1.6 对锁的实现引入了大量的优化,如偏向锁、轻量级锁、
### 2.2. 讲一下 JMM(Java 内存模型)
+Java 内存模型抽象了线程和主内存之间的关系,就比如说线程之间的共享变量必须存储在主内存中。Java 内存模型主要目的是为了屏蔽系统和硬件的差异,避免一套代码在不同的平台下产生的效果不一致。
+
在 JDK1.2 之前,Java 的内存模型实现总是从**主存**(即共享内存)读取变量,是不需要进行特别的注意的。而在当前的 Java 内存模型下,线程可以把变量保存**本地内存**(比如机器的寄存器)中,而不是直接在主存中进行读写。这就可能造成一个线程在主存中修改了一个变量的值,而另外一个线程还继续使用它在寄存器中的变量值的拷贝,造成**数据的不一致**。
-
+> - **主内存** :所有线程创建的实例对象都存放在主内存中,不管该实例对象是成员变量还是方法中的本地变量(也称局部变量)
+> - **本地内存** :每个线程都有一个私有的本地内存来存储共享变量的副本,并且,每个线程只能访问自己的本地内存,无法访问其他线程的本地内存。本地内存是 JMM 抽象出来的一个概念,存储了主内存中的共享变量副本。
+
+
要解决这个问题,就需要把变量声明为 **`volatile`** ,这就指示 JVM,这个变量是共享且不稳定的,每次使用它都到主存中进行读取。
所以,**`volatile` 关键字 除了防止 JVM 的指令重排 ,还有一个重要的作用就是保证变量的可见性。**
-
+
### 2.3. 并发编程的三个重要特性
diff --git a/docs/java/jvm/java-jvm-questions-01.md b/docs/java/jvm/java-jvm-questions-01.md
new file mode 100644
index 00000000..ffc718a4
--- /dev/null
+++ b/docs/java/jvm/java-jvm-questions-01.md
@@ -0,0 +1,20 @@
+## Java 内存区域
+
+对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如果不了解虚拟机是怎样使用内存的,那么排查错误将会是一个非常艰巨的任务。
+
+### Java 内存区域和内存模型(JMM)有何区别?
+
+**Java 内存区域和内存模型是完全不一样的两个东西!!!**
+
+- Java 内存区域定义了JVM 在运行时如何分区存储程序数据,就比如说堆主要用于存放对象实例。
+- Java 内存模型抽象了线程和主内存之间的关系,就比如说线程之间的共享变量必须存储在主内存中,其目的是为了屏蔽系统和硬件的差异,避免一套代码在不同的平台下产生的效果不一致。
+
+### 简单介绍一下 Java 内存区域(运行时数据区)
+
+
+
+
+
+## 参考
+
+- 嘿,同学,你要的 Java 内存模型 (JMM) 来了:https://xie.infoq.cn/article/739920a92d0d27e2053174ef2
\ No newline at end of file
diff --git a/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png b/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png
index c42fc563..af6bef14 100644
Binary files a/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png and b/docs/java/jvm/pictures/HsJXU8S4oVtCTM7.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png b/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png
index 2e50fe79..9d108286 100644
Binary files a/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png and b/docs/java/jvm/pictures/java内存区域/2019-3String-Pool-Java1-450x249.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png b/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png
index 478eee39..7b5a827b 100644
Binary files a/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png and b/docs/java/jvm/pictures/java内存区域/JVM运行时数据区域.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png b/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png
index b384f8ce..31cbcba6 100644
Binary files a/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png and b/docs/java/jvm/pictures/java内存区域/Java创建对象的过程.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png b/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png
index a3e1e774..33976774 100644
Binary files a/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png and b/docs/java/jvm/pictures/java内存区域/Java运行时数据区域JDK1.8.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png b/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png
index cf16b319..2ef5569c 100644
Binary files a/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png and b/docs/java/jvm/pictures/java内存区域/《深入理解虚拟机》第三版的第2章-虚拟机栈.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png b/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png
index 81404186..8ac1222e 100644
Binary files a/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png and b/docs/java/jvm/pictures/java内存区域/内存分配的两种方式.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png b/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png
index 78ffd9c9..9df9380d 100644
Binary files a/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png and b/docs/java/jvm/pictures/java内存区域/字符串拼接-常量池.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png b/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png
index 73ff4828..c4414ab1 100644
Binary files a/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png and b/docs/java/jvm/pictures/java内存区域/对象的访问定位-使用句柄.png differ
diff --git a/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png b/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png
index c59a6bc5..f11e418c 100644
Binary files a/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png and b/docs/java/jvm/pictures/java内存区域/对象的访问定位-直接指针.png differ
diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png
index 73f38a08..cef399f1 100644
Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/1JConsole连接.png differ
diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png
index 0373a1b8..71bef6b0 100644
Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/2查看Java程序概况.png differ
diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png
index fb92fda3..9047c44a 100644
Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/3内存监控.png differ
diff --git a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png
index 2a442bb0..22bf6e04 100644
Binary files a/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png and b/docs/java/jvm/pictures/jdk监控和故障处理工具总结/4线程监控.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png b/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png
index 1b400e83..3a4eb117 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png and b/docs/java/jvm/pictures/jvm垃圾回收/01d330d8-2710-4fad-a91c-7bbbfaaefc0e.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/10317146.png b/docs/java/jvm/pictures/jvm垃圾回收/10317146.png
index e31fe13f..ad1816ef 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/10317146.png and b/docs/java/jvm/pictures/jvm垃圾回收/10317146.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/25178350.png b/docs/java/jvm/pictures/jvm垃圾回收/25178350.png
index 2c1aad35..7eb07004 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/25178350.png and b/docs/java/jvm/pictures/jvm垃圾回收/25178350.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/29176325.png b/docs/java/jvm/pictures/jvm垃圾回收/29176325.png
index 3f565bf5..2ad9c028 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/29176325.png and b/docs/java/jvm/pictures/jvm垃圾回收/29176325.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png
index 63da3b79..198a053f 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png and b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集器.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png
index 9f228a1f..00b9ab23 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png and b/docs/java/jvm/pictures/jvm垃圾回收/垃圾收集算法.png differ
diff --git a/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png b/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png
index 3eee875d..f79cbad2 100644
Binary files a/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png and b/docs/java/jvm/pictures/jvm垃圾回收/堆内存.png differ
diff --git a/docs/java/jvm/pictures/内存区域常见配置参数.png b/docs/java/jvm/pictures/内存区域常见配置参数.png
index 3c77ebfe..bb4a9d39 100644
Binary files a/docs/java/jvm/pictures/内存区域常见配置参数.png and b/docs/java/jvm/pictures/内存区域常见配置参数.png differ