java
文章平均质量分 93
java
踏遍三十六岸
万般皆是命 半点不由人……
展开
-
内存泄漏——为何每次用完 ThreadLocal 都要调用 remove()?
内存泄漏指的是,当某一个对象不再有用的时候,占用的内存却不能被回收,这就叫作内存泄漏。因为通常情况下,如果一个对象不再有用,那么我们的垃圾回收器 GC,就应该把这部分内存给清理掉。这样的话,就可以让这部分内存后续重新分配到其他的地方去使用;否则,如果对象没有用,但一直不能被回收,这样的垃圾对象如果积累的越来越多,则会导致我们可用的内存越来越少,最后发生内存不够用的 OOM 错误。下面我们来分析一下,在 ThreadLocal 中这样的内存泄漏是如何发生的。原创 2024-05-18 20:10:42 · 1198 阅读 · 0 评论 -
Java中的ThreadLocal
ThreadLocal是JDK1.2开始就提供的一个用来存储线程本地变量的类。ThreadLocal中的变量是在每个线程中独立存在的,当多个线程访问ThreadLocal中的变量的时候,其实都是访问的自己当前线程的内存中的变量,从而保证的变量的线程安全。我们一般在使用ThreadLocal的时候都是为了解决线程中存在的变量竞争问题。其实解决这类问题,通常大家也会想到使用synchronized来加锁解决。例如在解决SimpleDateFormat的线程安全的时候。原创 2024-05-18 19:28:12 · 885 阅读 · 0 评论 -
Java原子类
类在引用类型原子类中,彻底地解决了 ABA 问题,其它的 CAS 能力与另外两个类相近,所以最具代表性。上一节中提到了针对基本数据类型的原子类,那么如果想针对引用类型做原子操作怎么办?如果你仅仅需要累加操作,使用原子化的累加器性能会更好,代价就是会消耗更多的内存空间。,这四个类仅仅用来执行累加操作,相比原子化的基本数据类型,速度更快,但是不支持。已经有了针对基本类型和引用类型的原子类,为什么还要提供针对数组的原子类呢?最终返回的是一个准确的数值, 所以在一些对实时性要求比较高的场景下,原创 2024-05-15 16:20:26 · 559 阅读 · 0 评论 -
Java 基础知识- 创建线程的几种方式
大家好我是苏麟 , 今天聊聊创建线程的几种方式 .原创 2024-03-24 17:56:04 · 680 阅读 · 0 评论 -
Java基础知识-异常
我们说了Java中不同的异常类,分别表示着某一种具体的异常情况,那么在开发中总是有些异常情况是SUN没有定义好的,此时我们根据自己业务的异常情况来定义异常类。,例如年龄负数问题,考试成绩负数问题。在上述代码中,发现这些异常都是JDK内部定义好的,但是实际开发中也会出现很多异常,这些异常很可能在JDK中没有定义过,例如年龄负数问题,考试成绩负数问题.那么能不能自己定义异常呢?在开发中根据自己业务的异常情况来定义异常类.自定义一个业务逻辑异常:。一个登陆异常类。自定义一个编译期异常: 自定义类 并继承于。原创 2024-01-28 00:15:00 · 900 阅读 · 0 评论 -
Java 基础知识-IO流
生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input和输出output,即流向内存是输入流,流出内存的输出流。Java中I/O操作主要是指使用java.io包下的内容,进行输入、输出操作。输入也叫做读取数据,输出也叫做作写出数据。原创 2024-01-27 02:15:00 · 1859 阅读 · 0 评论 -
Java 基础知识-File类
大家好我是苏麟 , 今天聊聊File .原创 2024-01-27 01:30:00 · 816 阅读 · 0 评论 -
Java 基础知识-反射
大家好我是苏麟 , 今天聊聊反射 .原创 2024-01-18 16:27:55 · 1030 阅读 · 0 评论