- [[MySQL]] :LOGBOOK: CLOCK: [2023-10-07 Sat 13:05:28] :END: - DONE 多线程 :LOGBOOK: CLOCK: [2023-10-07 Sat 13:11:17]--[2023-10-19 Thu 17:21:38] => 292:10:21 :END: - [[Java创建线程的方式有哪些]] - [[线程生命周期状态]] - [[什么是线程安全,线程安全的本质]] - [[ThreadLocal使用场景]] - [[ThreadLocal内存泄漏]] - [[Java中21种锁]] - [[为什么阿里禁用Executors创建线程]] - [[如何根据实际需要,定制自己的线程池]] - [[CAS缺点]] - [[线程池线程复用原理]] - [[阻塞和非阻塞队列的并发安全原理]] - [[公平锁和非公平锁]] - [[自旋锁优缺点]] - [[合适的线程数量,CPU核心数和线程数的关系]] - [[CAS是一种什么样的同步机制]] - [[线程加锁有哪些方式,Synchronized和lock的区别]] - [[进程和线程的区别,使用线程真的能节省时间]] - [[线程有几种状态]] - [[ThreadLocal是什么,工作中有用到过吗]] - [[ThreadLocal如何实现]] - [[ThreadLocal父子线程怎么共享数据]] - [[ThreadLocalMap的结构及扩容机制]] - [[解决hash冲突方法]] - [[你知道哪几种锁,分别有什么特点]] - [[什么是阻塞队列,Java中有哪些阻塞队列]] - [[ConcurrentHashMap为什么放弃了分段锁]] - [[HashMap内部如何工作]] - [[什么是指令重排序,为什么要重排序]] - [[什么是内存可见性]] - [[主内存和工作内存的关系]] - [[什么是happen-before原则]] - [[为什么需要AQS,AQS的作用和重要性]] - [[一个线程调用两次start()方法会出现什么情况]] - [[为什么多线程会带来性能问题]] - [[线程池有几种拒绝策略]] - [[哪些解决死锁的策略]] - [[你知道哪些线程安全问题]] - [[线程池中提交一个任务是怎么样的]] - DONE JVM :LOGBOOK: CLOCK: [2023-10-07 Sat 13:11:28]--[2023-10-17 Tue 20:44:40] => 247:33:12 :END: - https://www.bilibili.com/video/BV1dA411U7or - [[JVM主要组成部分]] - [[JVM内存结构]] - [[垃圾回收算法]] - [[垃圾回收器]] - [[JVM调优]] - [[JDK自带调优工具]] - [[生产环境OOM问题]] - [[生产环境CPU飙高问题]] - [[类加载机制]] - [[对象完整创建流程]] - [[对象分配内存时的指针碰撞和空闲列表机制]] - [[对象头]] - [[对象分配内存时的并发问题解决CAS与TLAB机制]] - [[如何计算对象占用内存大小]] - [[对象指针压缩]] - [[栈上分配,逃逸分析,标量替换]] - [[引用计数法有什么问题]] - [[GC Root可达性分析法]] - [[什么样的类能被回收]] - [[JVM内部各种垃圾收集算法]] - [[CMS垃圾回收过程]] - [[CMS比较严重的问题并发收集阶段再次触发Full GC]] - [[垃圾收集底层三色标记算法]] - [[G1垃圾收集过程]] - [[G1收集器最大停顿时间时如何实现的]] - [[内存泄漏如何排查和解决]] - [[GC什么时候都能做吗,GC安全点和安全区域]] - [[字符串常量池]] - [[基本类型包装类常量池如何实现的]] - 堆的分代 - 年轻代minor gc - Eden - S0 - S1 - 老年代full gc - 可达性分析法 - GCRoots,以root为节点分析引用的对象 - jvisualvm - 双击进去查看内部的运行情况 - arthas - java -jar运行jar包 - dashboard - thread 线程号 - 定位代码运行位置 - thread -b - 查看死锁 - jad - 反编译代码 - ognl - 修改线上系统变量的值 - STW机制 - 用户线程会被暂停 - 电商网站 - 有压力频繁full gc - 亿级流量电商 - 每个用户平均点击20,30次 - 日活用户500万 - 付费转换率10% - 日均50万单 - 大促在抢购前几分钟产生 - 每秒1000多单 - 4核8G部署 300单/秒 - 一个订单对象1KB - 每秒300KB订单 - 其他对象放大20倍 - eden800M,s0,s1,100M,old2G - 一秒产生60M对象,运行14秒占满eden - 因为动态对象年龄,每秒60M对象直接移动到老年代 - 能够对JVM调优,让其不发生Full GC - 可以,调大新生代的区域大小,让清理的时间延长 - 长期存活对象移动到老年代 - 动态对象年龄 - 一批对象的总大小大于这块susrvivor区域内存大小的50%,大于等于这批对象年龄最大值的对象可以直接进入老年代 -