JAVA知识点大全
2022-07-05 10:33:26 0 举报
AI智能生成
超全的JAVA知识点,以思维导图的方式从浅入深的梳理各项知识点
作者其他创作
大纲/内容
Devops
K8S
Docker
云原生
Linux
Windows
Unix
操作系统
JIRA
Git
Wiki
TeamMark
Nacos
项目管理
Quartz
Elastic-Job
Xxl-Job
Saturn
TBSchedule
定时服务
ActiveMQ
RocketMQ
RabbitMQ
Kafka
消息中间件
F5
Nginx
DNS
负载均衡
Spark
Flink
Storm
实时分析
Hbase
Hive
HDFS
Oozie
Yarn
Sqoop
Flume
MapReduce
离线分析
TDengine
Open TSDB
InfluxDB
Kdb+
Graphite
时序数据
大数据
Eclipse
MyEclipse
IDEA
开发工具
Mysql
Oracle
DB2
SQL Server
关系型数据库
MongoDb
Cassandra
Neo4j
非关系型数据库
Reids
Ehcache
缓存数据库
数据存储
Solr
IK Analyzer
ES
Mmseg4j
Ansj
搜索服务
可见性
原子性
有序性
JMM
触发方式
Eden
Minor GC
Young GC
只收集old gen的GC。只有CMS的concurrent collection是这个模式
Old GC
G1特有-Mixed GC
Partial GC
MajorGC
调用System.gc时,系统建议执行Full GC,但是不必然执行
老年代空间不足
方法区空间不足
通过Minor GC后进入老年代的平均大小大于老年代的可用内存
由Eden区、survivor space1(From Space)区向survivor space2(To Space)区复制时,对象大小大于To Space可用内存,则把该对象转存到老年代,且老年代的可用内存小于该对象大小
FullGC
GC方式
Serial
ParNew
Parallel Scavenge
新生代收集器
Serial Old
Parallel Old
CMS
老年代收集器
G1
整堆收集器
收集器
引用计数法
虚拟机栈中引用的对象
方法区类静态属性引用的对象
方法区常量池引用的对象
本地方法栈 JNI 引用的对象
可以作为 GC Roots 的对象
引用链法
对象存活判断方式
GC 的时候必须要等到 Java 线程都进入到 safepoint 的时候 VMThread 才能开始执行 GC
SafePoint
标记清除
标记整理
复制算法
分代收集
收集算法
尚未被GC访问过的对象,如果全部标记已完成依旧为白色的,称为不可达对象,既垃圾对象。
白色
本对象已经被GC访问过,且本对象的子引用对象也已经被访问过了。
黑色
本对象已访问过,但是本对象的子引用对象还没有被访问过,全部访问完会变成黑色,属于中间态。
灰色
基本算法
一个本应该是垃圾的对象被视为了非垃圾
多标-浮动垃圾
增量更新(Incremental Update)
原始快照(SATB,Snapshot At The Beginning)
外框
解决方案
读写屏障
G1使用的是原始快照
CMS使用的是增量更新
方案抉择
漏标-读写屏障
三色标记
GC
类型信息
域(成员变量)信息
方法信息
静态变量
JIT代码缓存
字面量
符号引用
运行时常量池
方法区
from
to
survival
Old
堆
线程共享
基本数据类型
returnAddress 类型
对象引用
非static方法0号位为this
局部变量表
操作数栈
动态链接
方法返回地址
栈帧
栈
本地方法栈
程序计数器
线程私有
JVM内存模型
jmap [-F] -histo pid
jmap [-F] heap pid
jmap
jstack [-F] [-l] pid
jstack
jhat file
jhat
jps -l
jps
jinfo pid
jinfo
jstat -gc pid 5000 1000
jstat -gcutil pid 5000 1000
jstack -class pid 5000 1000
jstat
自身命令工具
jconsole
jvisualvm
mat
外部工具
内存调试工具
-XX:MaxTenuringThreshold
参数设置
1.加载
2.验证
3. 准备
4.解析
5.初始化
6.使用
7.卸载
类加载过程
连接
1、创建类的实例
2、访问类的静态变量
3、调用类的静态方法
4、反射加载
5、初始化一个类的子类
6、java虚拟机启动时被标记为启动类的类
主动使用的情况(6种)
双亲委托机制
一个类只有被第一次主动使用时,才会被java虚拟机加载
代理模式
1. 启动类加载器(Bootstrap ClassLoader)用来加载 java 核心类库,无法被 java 程序直接引用。
2. 扩展类加载器(extensions class loader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。
3. 系统类加载器(system class loader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过ClassLoader.getSystemClassLoader()来获取它。
4. 用户自定义类加载器,通过继承 java.lang.ClassLoader 类的方式实现。
类加载器
线程上下文类加载器
Tomcat服务器的类加载器
类加载
JVM
int DEFAULT_CAPACITY = 10
Object[] EMPTY_ELEMENTDATA = {}
Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}
int MAX_ARRAY_SIZE = Integer.MAX_VALUE - 8
静态常量
Object[] elementData
int size
局部变量
类内部定义
ArrayList()
ArrayList(int initialCapacity)
ArrayList(Collection<? extends E> c)
构造方法
Object[]
数据结构
Add
ArrayList
LinkedList
HashTable
List
HashMap
HashSet
ConcurrentHashMap
TreeMap
Map
Lock
Synchronized
CAS
锁
Volatile
Fork/Join
Condition
Semaohrone
通讯协作
ArrayBlockingQueue
LinkedBlockingQueue
PriorityBlockingQueue
DelayQueue
SynchronousQueue
Queue
Runnable
Thread
Callable
线程
Executor
Executors
ExecutorService
ThreadPoolExecutor
线程池
JUC
BIO
NIO
AIO
IO
IOC
AOP
DI
Spring
SpringBoot
Spring cloud
Servlet
开发框架
Ibatis
MyBatis
MyBatis Plus
Hibernate
持久层框架
Struts
Spring MVC
MVC框架
框架
Dubbo
Zookeeper
Eureka
Feign
Ribbon
Hystrix
分布式
Zuul
GateWay
网关
JAVA
JAVA知识点
0 条评论
回复 删除
下一页