摘要:
类的加载过程 1. loading 将class文件load到内存 2. verification 3. preparation 将静态变量赋默认值 4. resolution 常量池里面用到的符号引用转换为内存地址,可直接访问到 5. initialize 静态变量赋初始值 调用静态代码块 类加载 阅读全文
摘要:
在Java语言中,可作为GC Roots的对象包含以下几种: 虚拟机栈(栈帧中的本地变量表)中引用的对象。(可以理解为:引用栈帧中的本地变量表的所有对象) 方法区中静态属性引用的对象(可以理解为:引用方法区该静态属性的所有对象) 方法区中常量引用的对象(可以理解为:引用方法区中常量的所有对象) 本地 阅读全文
摘要:
补充小点 String str="kvill" 和 String str=new String("kvill")的区别 "kvill"都是字符串常量,它们在编译期就被确定了, 会在常量池中创建一个"kvill"字符串对象 用new String("kvill") 首先在堆空间创建内存空间,并将引用付 阅读全文
摘要:
目录 一、Debug开篇 二、基本用法&快捷键 三、变量查看 四、计算表达式 五、智能步入 六、断点条件设置 七、多线程调试 八、回退断点 九、中断Debug 十、附:JRebel激活 Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及 阅读全文
摘要:
java从编码到执行 JIT是什么?Java程序最初是通过解释器进行解释执行的,当虚拟机发现某个方法或代码块运行的特别频繁时,会把这些代码认定为“热点代码”(Hot Spot Code)。为了提高热点代码的执行效率,在运行时,虚拟机会把这些代码编译成本地平台相关的机器码,并进行各种层次的优化,完成这 阅读全文
摘要:
https://www.cnblogs.com/czwbig/p/11127124.html Java 内存区域和内存模型 https://www.jianshu.com/p/8be816cbb5ed TLAB https://blog.csdn.net/u011635492/article/det 阅读全文
摘要:
容器架构 Hashtable HashMap SynchronizedHashMap CurrentHashMap CurrentSkipListMap(弥补同步的TreeMap) Hashtable所以方法默认加sychronized, HashMap默认没有加锁, 而SynchronizedHa 阅读全文
摘要:
https://www.jianshu.com/p/0607c5f62c51 NUMA 全称 Non-Uniform Memory Access,译为“非一致性内存访问”。这种构架下,不同的内存器件和CPU核心从属不同的 Node,每个 Node 都有自己的集成内存控制器(IMC,Integrate 阅读全文
摘要:
https://www.jianshu.com/p/497a8cfeef63// ReentrantLock构造函数传入了一个内部类 NonfairSync NonfairSync-》Sync-》AbstractQueuedSynchronizer 继承关系 public ReentrantLock 阅读全文
摘要:
(1)LockSupport 这儿park和unpark其实实现了wait和notify的功能,不过还是有一些差别的。 park不需要获取某个对象的锁 因为中断的时候park不会抛出InterruptedException异常,所以需要在park之后自行判断中断状态,然后做额外的处理 package 阅读全文