JVM/GC
2021-01-25 11:17:05 0 举报
AI智能生成
学习JVM/GC笔记
作者其他创作
大纲/内容
1.保证可见性
2.不保证原子性
3.禁止指令重排序
单例模式
单线程
多线程
1.volatile修饰实例,禁止指令重排序
2.使用DCL,防止创建多实例
JMM
主内存
工作内存
特性
可见性
原子性
原理:CAS
自旋锁
Unsafe类
缺点:CAS
使用自旋锁,CPU开销大
只能保证一个共享变量的原子操作
引出ABA问题
有序性
容器的线程安全性
ArrayList
解决ArrayList的线程不安全
1.使用Vector
2.使用Collections
3.使用CopyOnWriteArrayList
HashMap
解决ArrayList的线程不安全
1.2.使用Collections
2.使用ConcurrentHashMap
HashSet
解决HashSet的线程不安全
1.使用CopyOnWriteArraySet
锁
公平锁和非公平锁
公平锁
非公平锁
可重入锁/递归锁
自旋锁
独占锁、读写锁:ReentrantReadWriteLock
CountDownLatch/CyclicBarrier
Semaphore
自由主题
生产消费者演变
Synchronized/ReentrantLock
ReentrantLock
线程池
Executors.newFixedThreadPool
Executors.newSingleThreadPool
Executors.newCachedThreadPool
7大参数
corePoolSize
maxiumPoolSize
keepAliveTime
timeUnit
workQueue
threadFactory
handler
工作流程
如何合理地配置线程池的7大参数?
CPU密集型
IO密集型
自由主题
JVM/GC
GC的作用域:堆和方法区
算法
引用计数
复制
标记清除
标记整理
如何确定垃圾?
对象的引用数为0且可达性分析确定为不可达的对象
GC roots
JVM参数
标配参数
-version
-help
...
X参数
XX参数
Boolean
KV
查看配置信息
jps
jinfo
JVM常用参数
-Xms
-Xmx
-Xss
-Xmn
-XX:MetaSpaceSize
-XX:PrintGCDetails
-XX:NewRatio
-XX:SurvivorRatio
引用
强引用
软引用
弱引用
虚引用
0 条评论
下一页