java基础知识
快乐的小J
基础不牢,地动山摇。
展开
-
JVM存储结构、对象的栈上分配、逃逸分析系列总结
一个线程拥有一个私有虚拟机栈;一个虚拟机栈可以拥有多个栈帧;一个栈帧对应一个方法的调用;线程可以调用多个方法,每调用一个方法,就将方法信息以栈帧方式压栈。...原创 2019-03-12 11:14:49 · 700 阅读 · 0 评论 -
concurrent mode failure
【https://blog.csdn.net/yangguosb/article/details/79857844】concurrent mode failure是什么? CMS垃圾收集器特有的错误,CMS的垃圾清理和引用线程是并行进行的,如果在并行清理的过程中老年代的空间不足以容纳应用产生的垃圾(也就是老年代正在清理,从年轻代晋升了新的对象,或者直接分配大对象年轻代放不下导致直接在老年...原创 2020-04-02 17:26:12 · 5444 阅读 · 3 评论 -
经典的GC收集器组合
常用的组合为(1)Serial+Serial Old实现单线程的低延迟垃圾回收机制;(2)ParNew+CMS,实现多线程的低延迟垃圾回收机制;(3)Parallel Scavenge和Parallel Scavenge Old,实现多线程的高吞吐量垃圾回收机制;(4)另外,Serial Old是一款比较万能的老年代收集器。ParNew可以和Serial Old结合使用,Paral...原创 2020-04-02 15:21:57 · 469 阅读 · 0 评论 -
JVM初始大小和最大堆大小
可以用命令直接查询:java -XX:+PrintFlagsFinal -version | grep HeapSize或者使用java代码:Runtime.getRuntime().maxMemory();官方文档:1. client模式初始堆大小:物理内存的1/64,但最小是8MB。最大堆大小:在物理内存达到192MB之前,JVM最大堆大小为...原创 2020-03-31 21:37:05 · 3742 阅读 · 0 评论 -
HashMap的resize()过程简述版本
初始默认大小为16,默认负载阈值0.751. 如果oldCap已经超出最大容量。将Integer.MAX_VALUE赋给阈值,返回旧表;2. 如果oldCap以及oldCap*2是介于16和最大容量之间(多落在这个分支),oldCap*2得到新容量,oldThr*2得到新阈值;3. 如果oldCap==0并且oldThr>0,那么oldThr直接赋给newC...原创 2020-03-30 23:08:23 · 1253 阅读 · 0 评论 -
ArrayList添加元素扩容过程简述
size表示数组元素数量,length表示数组长度;minCapacity=size+1为最小容量(当前元素放进去最少需要size+1的容量)1. 判断初始状态。如果数组为初始状态,将初始容量(10)和最小容量之间的较大值赋值给minCapacity;2. 判断是否需要扩容。如果minCapacity超出了length,那么需要扩容;3. 设置扩容的容量。...原创 2020-03-30 22:14:06 · 696 阅读 · 1 评论 -
Java线程的状态;WAITING、TIMED_WAITING与BLOCKED的区别;Object.wait()和Thread.sleep()
1. Java线程的状态包括:NEW、READY、RUNNING、WAITING、TIMED_WAITING、BLOCKED2.WAITING、TIMED_WAITING与BLOCKED的区别:(1)WAITING:进入等待状态,方式:wait/join/park方法进入无限等待,通过notify/notifyAll/unpark唤醒;(2)TIMED_WAITING:与WA...原创 2020-03-30 14:48:11 · 9982 阅读 · 2 评论 -
【收集】java IO操作类的关系图
1. 按照操作类型(按照常用):缓冲、文件、基本类型、序列化、数组、管道、打印,以及字节流/字符流转换。也不太难记忆-.-【图片来自javaguide】2. 按照字节流/字符流:除了Filter开头的,其它为基础字节流或基础字符流;Filter开头的是装饰接口。3. 输入字节流(inputStream)的继承关系图(输出流类似)InputStream为抽象类,...原创 2020-03-29 18:46:43 · 358 阅读 · 0 评论 -
try的return和finally相关问题
(1)try块的return和finally的执行顺序。try执行之后,return之前会跳转到finally执行代码。(2)是否有可能执行了try不执行finally?如果在try调用了system.exit(0),就不会执行到finally。(3)finally何时会影响返回值?如果返回值是基础类型,finally中的修改不会影响try的return。以下代码输出为10....原创 2020-03-28 22:52:34 · 436 阅读 · 0 评论