
jvm
文章平均质量分 61
jvm相关
牛虻~
这个作者很懒,什么都没留下…
展开
-
JAVA知识体系
java知识体系原创 2022-12-06 09:59:29 · 7615 阅读 · 0 评论 -
DCL单例是否需要加volatile,为什么
为什么需要加,为什么因为cpu是乱序执行的,如果不加,在多线程情况下,会得到半初始化的对象volatile是如何实现的字节码层面:ACC_VOLATILEjvm层面:使用内存屏障LoadLoad屏障:对于这样的语句Load1; LoadLoad; Load2,在Load2及后续读取操作要读取的数据被访问前,保证Load1要读取的数据被读取完毕。StoreStore屏障:对于这样的语句Store1; StoreStore; Store2,在Store2及后续写入操作执行前,保证Stor原创 2021-04-05 15:10:23 · 266 阅读 · 1 评论 -
对象引用强软弱虚
1. 强引用普通new 对象就是使用强引用2. 软引用当内存不足时,软引用会被回收3. 弱引用只要遇到垃圾回收,就会被回收掉4. 虚引用如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收器回收。...原创 2021-04-05 16:23:27 · 126 阅读 · 0 评论 -
java对象创建过程
class loading先将class字节码文件加载到内存中class linking建立关联verification: 对加载进来得二进制进行校验preparation: 静态变量设默认值resolution: 解析,将字符串代表的引用进行关联替换class initializing: 类初始化,静态变量设置初始值,执行静态语句块申请对象内存成员变量赋默认值调用构造方法成员变量顺序赋值执行构造方法语句...原创 2021-04-05 14:55:03 · 90 阅读 · 0 评论 -
GC相关整理
目录什么是垃圾如何定位垃圾常见的垃圾回收算法对象分配过程jvm常见垃圾回收器垃圾收集器跟内存大小的关系什么是垃圾没有任何引用所指向的对象就是垃圾如何定位垃圾引用记数跟可达算法常见的垃圾回收算法标记清除:从根对象开始标记,之后将未标记的对象进行清理,适用于存活对象叫多的情况缺点:扫描两次,效率偏低拷贝算法:开辟一块内存,将存活对象顺序拷贝到新开辟的内存中,适用于存活对象较少的情况。优点:只扫描一次,效率较高,不会产生碎片缺点:空间浪费,需要移动对象。标记压缩:标记的同时进行移动,原创 2021-04-05 10:49:40 · 142 阅读 · 2 评论