diff --git a/README.md b/README.md
index bb3f0c06b13..ddbae59904e 100644
--- a/README.md
+++ b/README.md
@@ -82,14 +82,14 @@
JVM 这部分内容主要参考 [JVM 虚拟机规范-Java8 ](https://docs.oracle.com/javase/specs/jvms/se8/html/index.html) 和周志明老师的[《深入理解Java虚拟机(第3版)》](https://book.douban.com/subject/34907497/) (强烈建议阅读多遍!)。
-1. **[Java 内存区域](docs/java/jvm/Java内存区域.md)**
-2. **[JVM 垃圾回收](docs/java/jvm/JVM垃圾回收.md)**
-3. [JDK 监控和故障处理工具](docs/java/jvm/JDK监控和故障处理工具总结.md)
+1. **[Java 内存区域](docs/java/jvm/内存区域.md)**
+2. **[JVM 垃圾回收](docs/java/jvm/jvm垃圾回收.md)**
+3. [JDK 监控和故障处理工具](docs/java/jvm/jdk监控和故障处理工具总结.md)
4. [类文件结构](docs/java/jvm/类文件结构.md)
5. **[类加载过程](docs/java/jvm/类加载过程.md)**
6. [类加载器](docs/java/jvm/类加载器.md)
-7. **[【待完成】最重要的 JVM 参数指南(翻译完善了一半)](docs/java/jvm/最重要的JVM参数指南.md)**
-9. **[【加餐】大白话带你认识 JVM](docs/java/jvm/[加餐]大白话带你认识JVM.md)**
+7. **[【待完成】最重要的 JVM 参数总结(翻译完善了一半)](docs/java/jvm/jvm参数指南.md)**
+9. **[【加餐】大白话带你认识 JVM](docs/java/jvm/[加餐]大白话带你认识jvm.md)**
### 新特性
diff --git "a/docs/java/collection/java\351\233\206\345\220\210\346\241\206\346\236\266\345\237\272\347\241\200\347\237\245\350\257\206&\351\235\242\350\257\225\351\242\230\346\200\273\347\273\223.md" "b/docs/java/collection/java\351\233\206\345\220\210\346\241\206\346\236\266\345\237\272\347\241\200\347\237\245\350\257\206&\351\235\242\350\257\225\351\242\230\346\200\273\347\273\223.md"
index 805b29a280f..b0668d0a0af 100644
--- "a/docs/java/collection/java\351\233\206\345\220\210\346\241\206\346\236\266\345\237\272\347\241\200\347\237\245\350\257\206&\351\235\242\350\257\225\351\242\230\346\200\273\347\273\223.md"
+++ "b/docs/java/collection/java\351\233\206\345\220\210\346\241\206\346\236\266\345\237\272\347\241\200\347\237\245\350\257\206&\351\235\242\350\257\225\351\242\230\346\200\273\347\273\223.md"
@@ -1,54 +1,3 @@
-
-
-- [1. 剖析面试最常见问题之 Java 集合框架](#1-剖析面试最常见问题之-java-集合框架)
- - [1.1. 集合概述](#11-集合概述)
- - [1.1.1. Java 集合概览](#111-java-集合概览)
- - [1.1.2. 说说 List, Set, Queue, Map 四者的区别?](#112-说说-list-set-queue-map-四者的区别)
- - [1.1.3. 集合框架底层数据结构总结](#113-集合框架底层数据结构总结)
- - [1.1.3.1. List](#1131-list)
- - [1.1.3.2. Set](#1132-set)
- - [1.1.3.3 Queue](#1133-queue)
- - [1.1.3.4. Map](#1134-map)
- - [1.1.4. 如何选用集合?](#114-如何选用集合)
- - [1.1.5. 为什么要使用集合?](#115-为什么要使用集合)
- - [1.2. Collection 子接口之 List](#12-collection-子接口之-list)
- - [1.2.1. Arraylist 和 Vector 的区别?](#121-arraylist-和-vector-的区别)
- - [1.2.2. Arraylist 与 LinkedList 区别?](#122-arraylist-与-linkedlist-区别)
- - [1.2.2.1. 补充内容:双向链表和双向循环链表](#1221-补充内容双向链表和双向循环链表)
- - [1.2.2.2. 补充内容:RandomAccess 接口](#1222-补充内容randomaccess-接口)
- - [1.2.3. 说一说 ArrayList 的扩容机制吧](#123-说一说-arraylist-的扩容机制吧)
- - [1.3. Collection 子接口之 Set](#13-collection-子接口之-set)
- - [1.3.1. comparable 和 Comparator 的区别](#131-comparable-和-comparator-的区别)
- - [1.3.1.1. Comparator 定制排序](#1311-comparator-定制排序)
- - [1.3.1.2. 重写 compareTo 方法实现按年龄来排序](#1312-重写-compareto-方法实现按年龄来排序)
- - [1.3.2. 无序性和不可重复性的含义是什么](#132-无序性和不可重复性的含义是什么)
- - [1.3.3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同](#133-比较-hashsetlinkedhashset-和-treeset-三者的异同)
- - [1.4 Collection 子接口之 Queue](#14-collection-子接口之-queue)
- - [1.4.1 Queue 与 Deque 的区别](#141-queue-与-deque-的区别)
- - [1.4.2 ArrayDeque 与 LinkedList 的区别](#142-arraydeque-与-linkedlist-的区别)
- - [1.4.3 说一说 PriorityQueue](#143-说一说-priorityqueue)
- - [1.5. Map 接口](#15-map-接口)
- - [1.5.1. HashMap 和 Hashtable 的区别](#151-hashmap-和-hashtable-的区别)
- - [1.5.2. HashMap 和 HashSet 区别](#152-hashmap-和-hashset-区别)
- - [1.5.3. HashMap 和 TreeMap 区别](#153-hashmap-和-treemap-区别)
- - [1.5.4. HashSet 如何检查重复](#154-hashset-如何检查重复)
- - [1.5.5. HashMap 的底层实现](#155-hashmap-的底层实现)
- - [1.5.5.1. JDK1.8 之前](#1551-jdk18-之前)
- - [1.5.5.2. JDK1.8 之后](#1552-jdk18-之后)
- - [1.5.6. HashMap 的长度为什么是 2 的幂次方](#156-hashmap-的长度为什么是-2-的幂次方)
- - [1.5.7. HashMap 多线程操作导致死循环问题](#157-hashmap-多线程操作导致死循环问题)
- - [1.5.8. HashMap 有哪几种常见的遍历方式?](#158-hashmap-有哪几种常见的遍历方式)
- - [1.5.9. ConcurrentHashMap 和 Hashtable 的区别](#159-concurrenthashmap-和-hashtable-的区别)
- - [1.5.10. ConcurrentHashMap 线程安全的具体实现方式/底层具体实现](#1510-concurrenthashmap-线程安全的具体实现方式底层具体实现)
- - [1.5.10.1. JDK1.7(上面有示意图)](#15101-jdk17上面有示意图)
- - [1.5.10.2. JDK1.8 (上面有示意图)](#15102-jdk18-上面有示意图)
- - [1.6. Collections 工具类](#16-collections-工具类)
- - [1.6.1. 排序操作](#161-排序操作)
- - [1.6.2. 查找,替换操作](#162-查找替换操作)
- - [1.6.3. 同步控制](#163-同步控制)
-
-
-
# 1. 剖析面试最常见问题之 Java 集合框架
## 1.1. 集合概述
@@ -309,11 +258,9 @@ Output:
### 1.3.3. 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
-`HashSet` 是 `Set` 接口的主要实现类 ,`HashSet` 的底层是 `HashMap`,线程不安全的,可以存储 null 值;
-
-`LinkedHashSet` 是 `HashSet` 的子类,能够按照添加的顺序遍历;
-
-`TreeSet` 底层使用红黑树,元素是有序的,排序的方式有自然排序和定制排序。
+- `HashSet`、`LinkedHashSet` 和 `TreeSet` 都是 `Set` 接口的实现类,都能保证元素唯一,并且都不是线程安全的。
+- `HashSet`、`LinkedHashSet` 和 `TreeSet` 的主要区别在于底层数据结构不同。`HashSet` 的底层数据结构是哈希表(基于 `HashMap` 实现)。`LinkedHashSet` 的底层数据结构是链表和哈希表,元素的插入和取出顺序满足 FIFO。`TreeSet` 底层数据结构是红黑树,元素是有序的,排序的方式有自然排序和定制排序。
+- 底层数据结构不同又导致这三者的应用场景不同。`HashSet` 用于不需要保证元素插入和取出顺序的场景,`LinkHashSet` 用于保证元素的插入和取出顺序满足 FIFO 的场景,`TreeSet` 用于支持对元素自定义排序规则的场景。
## 1.4 Collection 子接口之 Queue
diff --git "a/docs/java/jvm/JDK\347\233\221\346\216\247\345\222\214\346\225\205\351\232\234\345\244\204\347\220\206\345\267\245\345\205\267\346\200\273\347\273\223.md" "b/docs/java/jvm/JDK\347\233\221\346\216\247\345\222\214\346\225\205\351\232\234\345\244\204\347\220\206\345\267\245\345\205\267\346\200\273\347\273\223.md"
index 779ab01f1ed..b38486bbe6e 100644
--- "a/docs/java/jvm/JDK\347\233\221\346\216\247\345\222\214\346\225\205\351\232\234\345\244\204\347\220\206\345\267\245\345\205\267\346\200\273\347\273\223.md"
+++ "b/docs/java/jvm/JDK\347\233\221\346\216\247\345\222\214\346\225\205\351\232\234\345\244\204\347\220\206\345\267\245\345\205\267\346\200\273\347\273\223.md"
@@ -1,23 +1,3 @@
-
-
-- [JDK 监控和故障处理工具总结](#jdk-监控和故障处理工具总结)
- - [JDK 命令行工具](#jdk-命令行工具)
- - [`jps`:查看所有 Java 进程](#jps查看所有-java-进程)
- - [`jstat`: 监视虚拟机各种运行状态信息](#jstat-监视虚拟机各种运行状态信息)
- - [` jinfo`: 实时地查看和调整虚拟机各项参数](#-jinfo-实时地查看和调整虚拟机各项参数)
- - [`jmap`:生成堆转储快照](#jmap生成堆转储快照)
- - [**`jhat`**: 分析 heapdump 文件](#jhat-分析-heapdump-文件)
- - [**`jstack`** :生成虚拟机当前时刻的线程快照](#jstack-生成虚拟机当前时刻的线程快照)
- - [JDK 可视化分析工具](#jdk-可视化分析工具)
- - [JConsole:Java 监视与管理控制台](#jconsolejava-监视与管理控制台)
- - [连接 Jconsole](#连接-jconsole)
- - [查看 Java 程序概况](#查看-java-程序概况)
- - [内存监控](#内存监控)
- - [线程监控](#线程监控)
- - [Visual VM:多合一故障处理工具](#visual-vm多合一故障处理工具)
-
-
-
# JDK 监控和故障处理工具总结
## JDK 命令行工具
diff --git "a/docs/java/jvm/JVM\345\236\203\345\234\276\345\233\236\346\224\266.md" "b/docs/java/jvm/JVM\345\236\203\345\234\276\345\233\236\346\224\266.md"
index 7d22468e5b7..9f6c1157c53 100644
--- "a/docs/java/jvm/JVM\345\236\203\345\234\276\345\233\236\346\224\266.md"
+++ "b/docs/java/jvm/JVM\345\236\203\345\234\276\345\233\236\346\224\266.md"
@@ -1,44 +1,5 @@
-
-
-
-
-- [JVM 垃圾回收](#jvm-垃圾回收)
- - [写在前面](#写在前面)
- - [本节常见面试题](#本节常见面试题)
- - [本文导火索](#本文导火索)
- - [1 揭开 JVM 内存分配与回收的神秘面纱](#1-揭开-jvm-内存分配与回收的神秘面纱)
- - [1.1 对象优先在 eden 区分配](#11-对象优先在-eden-区分配)
- - [1.2 大对象直接进入老年代](#12-大对象直接进入老年代)
- - [1.3 长期存活的对象将进入老年代](#13-长期存活的对象将进入老年代)
- - [1.4 动态对象年龄判定](#14-动态对象年龄判定)
- - [1.5 主要进行 gc 的区域](#15-主要进行-gc-的区域)
- - [2 对象已经死亡?](#2-对象已经死亡)
- - [2.1 引用计数法](#21-引用计数法)
- - [2.2 可达性分析算法](#22-可达性分析算法)
- - [2.3 再谈引用](#23-再谈引用)
- - [2.4 不可达的对象并非“非死不可”](#24-不可达的对象并非非死不可)
- - [2.5 如何判断一个常量是废弃常量?](#25-如何判断一个常量是废弃常量)
- - [2.6 如何判断一个类是无用的类](#26-如何判断一个类是无用的类)
- - [3 垃圾收集算法](#3-垃圾收集算法)
- - [3.1 标记-清除算法](#31-标记-清除算法)
- - [3.2 标记-复制算法](#32-标记-复制算法)
- - [3.3 标记-整理算法](#33-标记-整理算法)
- - [3.4 分代收集算法](#34-分代收集算法)
- - [4 垃圾收集器](#4-垃圾收集器)
- - [4.1 Serial 收集器](#41-serial-收集器)
- - [4.2 ParNew 收集器](#42-parnew-收集器)
- - [4.3 Parallel Scavenge 收集器](#43-parallel-scavenge-收集器)
- - [4.4.Serial Old 收集器](#44serial-old-收集器)
- - [4.5 Parallel Old 收集器](#45-parallel-old-收集器)
- - [4.6 CMS 收集器](#46-cms-收集器)
- - [4.7 G1 收集器](#47-g1-收集器)
- - [4.8 ZGC 收集器](#48-zgc-收集器)
- - [参考](#参考)
-
-
-
-
-# JVM 垃圾回收
+
+# JVM 垃圾回收详解
## 写在前面
diff --git "a/docs/java/jvm/[\345\212\240\351\244\220]\345\244\247\347\231\275\350\257\235\345\270\246\344\275\240\350\256\244\350\257\206JVM.md" "b/docs/java/jvm/[\345\212\240\351\244\220]\345\244\247\347\231\275\350\257\235\345\270\246\344\275\240\350\256\244\350\257\206JVM.md"
index f1e16f87e9f..a8801099823 100644
--- "a/docs/java/jvm/[\345\212\240\351\244\220]\345\244\247\347\231\275\350\257\235\345\270\246\344\275\240\350\256\244\350\257\206JVM.md"
+++ "b/docs/java/jvm/[\345\212\240\351\244\220]\345\244\247\347\231\275\350\257\235\345\270\246\344\275\240\350\256\244\350\257\206JVM.md"
@@ -1,3 +1,5 @@
+# 大白话带你认识JVM
+
> 来自掘金用户:[说出你的愿望吧丷](https://juejin.im/user/5c2400afe51d45451758aa96)投稿,原文地址:https://juejin.im/post/5e1505d0f265da5d5d744050#heading-28
## 前言
diff --git "a/docs/java/jvm/jvm \347\237\245\350\257\206\347\202\271\346\261\207\346\200\273.md" "b/docs/java/jvm/jvm \347\237\245\350\257\206\347\202\271\346\261\207\346\200\273.md"
deleted file mode 100644
index 7a835ecc8fe..00000000000
--- "a/docs/java/jvm/jvm \347\237\245\350\257\206\347\202\271\346\261\207\346\200\273.md"
+++ /dev/null
@@ -1,12 +0,0 @@
-无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎。不管是工作还是面试中,JVM都是必考题。如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了)。
-
-
-掌握了JVM机制,就等于学会了深层次解决问题的方法。对于Java开发者而言,只有熟悉底层虚拟机的运行机制,才能通过JVM日志深入到字节码的层次去分析排查问题,发现隐性的系统缺陷,进而提升系统性能。
-
-
-一些技术人员开发工具用得很熟练,触及JVM问题时却是模棱两可,甚至连内存模型和内存区域,HotSpot和JVM规范,都混淆不清。工作很长时间,在生产时还在用缺省参数来直接启动,以致系统运行时出现性能、稳定性等问题时束手无措,不知该如何追踪排查。久而久之,这对自己的职业成长是极为不利的。
-
-
-掌握JVM,是深入Java技术栈的必经之路。
-
-
\ No newline at end of file
diff --git "a/docs/java/jvm/\346\234\200\351\207\215\350\246\201\347\232\204JVM\345\217\202\346\225\260\346\214\207\345\215\227.md" "b/docs/java/jvm/jvm\345\217\202\346\225\260\346\214\207\345\215\227.md"
similarity index 94%
rename from "docs/java/jvm/\346\234\200\351\207\215\350\246\201\347\232\204JVM\345\217\202\346\225\260\346\214\207\345\215\227.md"
rename to "docs/java/jvm/jvm\345\217\202\346\225\260\346\214\207\345\215\227.md"
index a8514e149fe..1c6bc4029aa 100644
--- "a/docs/java/jvm/\346\234\200\351\207\215\350\246\201\347\232\204JVM\345\217\202\346\225\260\346\214\207\345\215\227.md"
+++ "b/docs/java/jvm/jvm\345\217\202\346\225\260\346\214\207\345\215\227.md"
@@ -1,4 +1,6 @@
-> 本文由 JavaGuide 翻译自 [https://www.baeldung.com/jvm-parameters](https://www.baeldung.com/jvm-parameters),并对文章进行了大量的完善补充。翻译不易,如需转载请注明出处,作者:[baeldung](https://www.baeldung.com/author/baeldung/) 。
+# 最重要的 JVM 参数总结
+
+本文由 JavaGuide 翻译自 [https://www.baeldung.com/jvm-parameters](https://www.baeldung.com/jvm-parameters),并对文章进行了大量的完善补充。翻译不易,如需转载请注明出处,作者:[baeldung](https://www.baeldung.com/author/baeldung/) 。
## 1.概述
diff --git "a/docs/java/jvm/Java\345\206\205\345\255\230\345\214\272\345\237\237.md" "b/docs/java/jvm/\345\206\205\345\255\230\345\214\272\345\237\237.md"
similarity index 94%
rename from "docs/java/jvm/Java\345\206\205\345\255\230\345\214\272\345\237\237.md"
rename to "docs/java/jvm/\345\206\205\345\255\230\345\214\272\345\237\237.md"
index 23b108644b9..5e203177908 100644
--- "a/docs/java/jvm/Java\345\206\205\345\255\230\345\214\272\345\237\237.md"
+++ "b/docs/java/jvm/\345\206\205\345\255\230\345\214\272\345\237\237.md"
@@ -1,39 +1,3 @@
-
-
-- [Java 内存区域详解](#java-内存区域详解)
- - [写在前面 (常见面试题)](#写在前面-常见面试题)
- - [基本问题](#基本问题)
- - [拓展问题](#拓展问题)
- - [一 概述](#一-概述)
- - [二 运行时数据区域](#二-运行时数据区域)
- - [2.1 程序计数器](#21-程序计数器)
- - [2.2 Java 虚拟机栈](#22-java-虚拟机栈)
- - [2.3 本地方法栈](#23-本地方法栈)
- - [2.4 堆](#24-堆)
- - [2.5 方法区](#25-方法区)
- - [2.5.1 方法区和永久代的关系](#251-方法区和永久代的关系)
- - [2.5.2 常用参数](#252-常用参数)
- - [2.5.3 为什么要将永久代 (PermGen) 替换为元空间 (MetaSpace) 呢?](#253-为什么要将永久代-permgen-替换为元空间-metaspace-呢)
- - [2.6 运行时常量池](#26-运行时常量池)
- - [2.7 直接内存](#27-直接内存)
- - [三 HotSpot 虚拟机对象探秘](#三-hotspot-虚拟机对象探秘)
- - [3.1 对象的创建](#31-对象的创建)
- - [Step1:类加载检查](#step1类加载检查)
- - [Step2:分配内存](#step2分配内存)
- - [Step3:初始化零值](#step3初始化零值)
- - [Step4:设置对象头](#step4设置对象头)
- - [Step5:执行 init 方法](#step5执行-init-方法)
- - [3.2 对象的内存布局](#32-对象的内存布局)
- - [3.3 对象的访问定位](#33-对象的访问定位)
- - [四 重点补充内容](#四--重点补充内容)
- - [4.1 String 类和常量池](#41-string-类和常量池)
- - [4.2 String s1 = new String("abc");这句话创建了几个字符串对象?](#42-string-s1--new-stringabc这句话创建了几个字符串对象)
- - [4.3 8 种基本类型的包装类和常量池](#43-8-种基本类型的包装类和常量池)
- - [参考](#参考)
- - [公众号](#公众号)
-
-
-
# Java 内存区域详解
如果没有特殊说明,都是针对的是 HotSpot 虚拟机。
diff --git "a/docs/java/jvm/\347\261\273\345\212\240\350\275\275\345\231\250.md" "b/docs/java/jvm/\347\261\273\345\212\240\350\275\275\345\231\250.md"
index 013397017ee..ff6685532f0 100644
--- "a/docs/java/jvm/\347\261\273\345\212\240\350\275\275\345\231\250.md"
+++ "b/docs/java/jvm/\347\261\273\345\212\240\350\275\275\345\231\250.md"
@@ -1,3 +1,5 @@
+# 类加载器详解
+
## 回顾一下类加载过程
类加载过程:**加载->连接->初始化**。连接过程又可分为三步:**验证->准备->解析**。
diff --git "a/docs/java/jvm/\347\261\273\345\212\240\350\275\275\350\277\207\347\250\213.md" "b/docs/java/jvm/\347\261\273\345\212\240\350\275\275\350\277\207\347\250\213.md"
index bf2811eb441..e4ab2ce2721 100644
--- "a/docs/java/jvm/\347\261\273\345\212\240\350\275\275\350\277\207\347\250\213.md"
+++ "b/docs/java/jvm/\347\261\273\345\212\240\350\275\275\350\277\207\347\250\213.md"
@@ -1,18 +1,6 @@
-
+# 类加载过程详解
-- [类的生命周期](#类的生命周期)
- - [类加载过程](#类加载过程)
- - [加载](#加载)
- - [验证](#验证)
- - [准备](#准备)
- - [解析](#解析)
- - [初始化](#初始化)
- - [卸载](#卸载)
- - [公众号](#公众号)
-
-
-
-# 类的生命周期
+## 类的生命周期
一个类的完整生命周期如下:
@@ -115,13 +103,3 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
- 《深入理解 Java 虚拟机》
- 《实战 Java 虚拟机》
-
如果你有不错的大厂面试经历
如果你对某一个Java知识点有过深刻的见解和记录
如果你有什么学习编程的经验分享给其他人
......
如果你想,你都可以把这些整理成文章投稿给我,你的文章将被更多人看到,你所写的东西也可能会默默影响到很多人。
本公众号主要接受下面几类文章投稿:
因为本公众号主要是Java方向,所以还有其他Java方向的文章都可以投稿。
投稿的要求很简单,你能把一个知识点讲清楚就好,JavaGuide 里面还有很多知识点没有加,我觉得都是不错的方向(内容我会帮你完善)。 这个投稿的目的是完善开源项目 JavaGuide 的同时能够让大家自主去学习并总结知识点。
投稿自己的原创文章成功之后不仅可以顺利加入32k+star 的开源项目 JavaGuide:https://github.com/Snailclimb/JavaGuide 扩大自己的竞争力,还会有50元左右的任意书籍或者50元现金奖励(对于不错的文章会更高)。
下面 2 种方式都可以
如果你也是公众号号主,你也有自己不错的文章想投稿给我的话,虽然你不会有奖励,但是发了你的文章之后,肯定会为你带来一些新人关注。