mirror of
https://github.com/Snailclimb/JavaGuide
synced 2025-06-16 18:10:13 +08:00
[feat]jvm内容重构,删除无用文章,优化文件名
This commit is contained in:
parent
de3a900375
commit
47b7c855ec
10
README.md
10
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)**
|
||||
|
||||
### 新特性
|
||||
|
||||
|
@ -1,23 +1,3 @@
|
||||
<!-- TOC -->
|
||||
|
||||
- [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多合一故障处理工具)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
# JDK 监控和故障处理工具总结
|
||||
|
||||
## JDK 命令行工具
|
||||
|
@ -1,44 +1,5 @@
|
||||
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
|
||||
|
||||
<!-- code_chunk_output -->
|
||||
|
||||
- [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-收集器)
|
||||
- [参考](#参考)
|
||||
|
||||
<!-- /code_chunk_output -->
|
||||
|
||||
|
||||
# JVM 垃圾回收
|
||||
# JVM 垃圾回收详解
|
||||
|
||||
## 写在前面
|
||||
|
||||
|
@ -1,3 +1,5 @@
|
||||
# 大白话带你认识JVM
|
||||
|
||||
> 来自掘金用户:[说出你的愿望吧丷](https://juejin.im/user/5c2400afe51d45451758aa96)投稿,原文地址:https://juejin.im/post/5e1505d0f265da5d5d744050#heading-28
|
||||
|
||||
## 前言
|
||||
|
@ -1,12 +0,0 @@
|
||||
无论什么级别的Java从业者,JVM都是进阶时必须迈过的坎。不管是工作还是面试中,JVM都是必考题。如果不懂JVM的话,薪酬会非常吃亏(近70%的面试者挂在JVM上了)。
|
||||
|
||||
|
||||
掌握了JVM机制,就等于学会了深层次解决问题的方法。对于Java开发者而言,只有熟悉底层虚拟机的运行机制,才能通过JVM日志深入到字节码的层次去分析排查问题,发现隐性的系统缺陷,进而提升系统性能。
|
||||
|
||||
|
||||
一些技术人员开发工具用得很熟练,触及JVM问题时却是模棱两可,甚至连内存模型和内存区域,HotSpot和JVM规范,都混淆不清。工作很长时间,在生产时还在用缺省参数来直接启动,以致系统运行时出现性能、稳定性等问题时束手无措,不知该如何追踪排查。久而久之,这对自己的职业成长是极为不利的。
|
||||
|
||||
|
||||
掌握JVM,是深入Java技术栈的必经之路。
|
||||
|
||||

|
@ -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.概述
|
||||
|
@ -1,39 +1,3 @@
|
||||
<!-- TOC -->
|
||||
|
||||
- [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-种基本类型的包装类和常量池)
|
||||
- [参考](#参考)
|
||||
- [公众号](#公众号)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
# Java 内存区域详解
|
||||
|
||||
如果没有特殊说明,都是针对的是 HotSpot 虚拟机。
|
@ -1,3 +1,5 @@
|
||||
# 类加载器详解
|
||||
|
||||
## 回顾一下类加载过程
|
||||
|
||||
类加载过程:**加载->连接->初始化**。连接过程又可分为三步:**验证->准备->解析**。
|
||||
|
@ -1,18 +1,6 @@
|
||||
<!-- TOC -->
|
||||
# 类加载过程详解
|
||||
|
||||
- [类的生命周期](#类的生命周期)
|
||||
- [类加载过程](#类加载过程)
|
||||
- [加载](#加载)
|
||||
- [验证](#验证)
|
||||
- [准备](#准备)
|
||||
- [解析](#解析)
|
||||
- [初始化](#初始化)
|
||||
- [卸载](#卸载)
|
||||
- [公众号](#公众号)
|
||||
|
||||
<!-- /TOC -->
|
||||
|
||||
# 类的生命周期
|
||||
## 类的生命周期
|
||||
|
||||
一个类的完整生命周期如下:
|
||||
|
||||
@ -115,13 +103,3 @@ Class 文件需要加载到虚拟机中之后才能运行和使用,那么虚
|
||||
- 《深入理解 Java 虚拟机》
|
||||
- 《实战 Java 虚拟机》
|
||||
- <https://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html>
|
||||
|
||||
## 公众号
|
||||
|
||||
如果大家想要实时关注我更新的文章以及分享的干货的话,可以关注我的公众号。
|
||||
|
||||
**《Java 面试突击》:** 由本文档衍生的专为面试而生的《Java 面试突击》V2.0 PDF 版本[公众号](#公众号)后台回复 **"Java 面试突击"** 即可免费领取!
|
||||
|
||||
**Java 工程师必备学习资源:** 一些 Java 工程师常用学习资源[公众号](#公众号)后台回复关键字 **“1”** 即可免费无套路获取。
|
||||
|
||||

|
||||
|
@ -1,25 +1,5 @@
|
||||
|
||||
<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->
|
||||
|
||||
<!-- code_chunk_output -->
|
||||
|
||||
- [类文件结构](#类文件结构)
|
||||
- [一 概述](#一-概述)
|
||||
- [二 Class 文件结构总结](#二-class-文件结构总结)
|
||||
- [2.1 魔数(Magic Number)](#21-魔数magic-number)
|
||||
- [2.2 Class 文件版本号(Minor&Major Version)](#22-class-文件版本号minormajor-version)
|
||||
- [2.3 常量池(Constant Pool)](#23-常量池constant-pool)
|
||||
- [2.4 访问标志(Access Flags)](#24-访问标志access-flags)
|
||||
- [2.5 当前类(This Class)、父类(Super Class)、接口(Interfaces)索引集合](#25-当前类this-class-父类super-class-接口interfaces索引集合)
|
||||
- [2.6 字段表集合(Fields)](#26-字段表集合fields)
|
||||
- [2.7 方法表集合(Methods)](#27-方法表集合methods)
|
||||
- [2.8 属性表集合(Attributes)](#28-属性表集合attributes)
|
||||
- [参考](#参考)
|
||||
|
||||
<!-- /code_chunk_output -->
|
||||
|
||||
|
||||
# 类文件结构
|
||||
# 类文件结构详解
|
||||
|
||||
## 一 概述
|
||||
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 77 KiB |
Binary file not shown.
Before Width: | Height: | Size: 193 KiB |
Binary file not shown.
Before Width: | Height: | Size: 106 KiB |
Binary file not shown.
Before Width: | Height: | Size: 379 KiB |
Loading…
x
Reference in New Issue
Block a user