
java基础
文章平均质量分 92
程序员fly
希望和你一起学习
展开
-
垃圾回收器概述
垃圾回收器概述 GC 从其底层实现方式(即 GC 算法)来看,大体可以分为两大类:基于可达性分析的 GC和基于引用计数法的 GC 可达性分析法 基本思路就是通过根集合作为起始点,从起始点开始搜索,经过的路径称为一个引用链,当一个对象没有被任务引用链访问到时候,则证明此对象不活跃,可以被回收,优点是GC垃圾回收效率高,实现比较简单(引用计数法是算法简单,实现比较难),缺点是在GC期间,整个应用需要被挂起(STW)。 引用计数法 在堆内存中分配对象时候,为对象分配一个额外的空间用来存计数器,如果有一个原创 2021-12-14 16:06:54 · 407 阅读 · 0 评论 -
值传递和引用传递的区别
值传递和引用传递的区别 /** * java中值传递和引用传递 */ class Person { private Integer id; private String personName; public Person(String personName) { this.personName = personName; } public Integer getId() { return id; } public v原创 2020-10-30 17:11:23 · 117 阅读 · 0 评论 -
ArrayList的问题以及解决方案
单线程环境下使用ArrayList List<String> list =new ArrayList<>(); list.add("1"); list.add("2"); list.add("3"); for (String element:list){ System.out.println(element); } 我们经常在项目中会这样使用ArrayList,我们来分析原创 2020-10-29 11:47:15 · 463 阅读 · 0 评论 -
详解单例模式-(Volatile应用)
什么是单例模式 构造函数私有 以静态方法或者枚举返回实例 确保实例只有一个,不论是在单线程环境 确保反序列化时候不会重新构建对象 常用的单例模式有 恶汉模式,懒汉模式,双重校验锁懒汉模式,静态内部类,枚举模式 恶汉模式 public class SingleTon { private static SingleTon INSTANCE = new SingleTon(); private SingleTon() { } publ原创 2020-10-28 10:39:08 · 273 阅读 · 0 评论 -
Volatile指令重排
Volatile禁止指令重排 计算机在执行程序时候,为了提高性能,编译器和处理器常常会对编译器进程优化,一般分为以下三种 源代码->编辑器优化的重排–>指令并行的重排->内部系统工单重排–>最终执行指令 单线程环境里面确保最终执行结果和代码顺序的结构一致 处理器在进行重排时候,必须要考虑指令之间的数据依赖性 多线程环境中线程交替执行,由于编译器优化重排的存在,两个线程使用的变量能否安保证一致性无法确定,结果无法预测 指令重排的例子 public class ResortSeqDe原创 2020-10-22 15:10:05 · 311 阅读 · 0 评论 -
Volatile为什么不保证原子性
Volatile不保证原子性 原子性的相关概念 我们经常提到的就是事务具备原子性,其实原子性简单理解就是某一个线程在进行具体业务的时候,中间不能被分割,要不同时成功,要么同时失败 代码验证 MyData myData = new MyData(); //创建20个线程,线程里面进行1000次循环 for (int i = 1; i <= 20 ; i++) { new Thread(()->{原创 2020-10-21 14:37:31 · 706 阅读 · 0 评论