- 博客(6)
- 收藏
- 关注
原创 垃圾收集器
垃圾回收器**串行垃圾回收器(Serial)****:**它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程。**并行垃圾回收器(Parallel)????*多个垃圾回收线程并行工作,此时用户线程是暂停的,适用于科学计算、大数据分析等弱交互。**并发垃圾回收器(CMS):**用户线程和垃圾线程同时执行(不一定是并行可能是交替执行),不需要停顿用户线程,互联网公司多用它,使用对响应时间有要求的场景。**G1垃圾回收器:**G1垃圾回收器将堆内存分割成不同的区域然后并发对其进行垃圾回收
2021-07-04 12:04:28 163
原创 强、软、弱、虚
强软弱虚强引用当内存不足,JVM开始垃圾回收,对于强引用对象,就算出现OOM也不会对该对象进行回收。强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就表明对象还“活着”,垃圾回收器不会碰这种对象,在JAVA中最常见的就是强引用,把一个对象赋给一个变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可以被垃圾回收器机制回收的,即使该对象以后永远都不会用到JVM也不会回收。因此强引用是造成内存泄漏的主要原因之一。对于一个普通的对象,如果没有其他的引用关系
2021-06-30 00:08:21 154
原创 2021-06-27
垃圾回收算法引用计数:缺点:每次对对象赋值均要维护引用计数器,且计数器本身也有一定的消耗。较难处理循环引用。复制算法:a. eden,SurvivorFrom复制到SurvivorTo,年龄+1首先当Eden区满的时候回触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,当Eden区再次触发GC的时候会扫描Eden区和From区,对这两个区进行垃圾回收,经过这次回收后还活着的对象,则直接复制到To区(如果有对象的年龄已经达到老年的标准,则赋值到老年代区),同时把这些对象的年龄+1。
2021-06-27 22:42:17 48
原创 线程池的七大参数
线程池的七大参数corePoolSize: 线程池中常驻核心线程数maximumPoolSize: 线程池中能够同时执行的最大线程数,此值必须大于等于1keepAliveTime: 多余的空闲线程的存活时间;当线程池数量抄错corePoolSize时,当空闲时间达到keepAliveTime时,多余线程会被销毁直到只剩下corePoolSize个线程为止unit: keepAliveTime的单位workQueue: 任务队列,被提交单尚未执行的队列threadFactory: 表示生成线程池
2021-06-27 18:06:09 3095
原创 生产者消费者
生产者消费者使用lock实现生产者消费者模式public class ProdConsumer_TraditionDemo { public static void main(String[] args) { ShareData shareData = new ShareData(); for (int i = 0; i < 5; i++) { new Thread(() -> { try { shareData.increment(); }
2021-06-27 14:16:11 57
原创 synchronized 和 lock有什么区别?
synchronized 和 lock有什么区别?原始构成不同synchronized属于jvm层面,是java的一个关键字lock是具体类,是api层面的锁使用方法不同synchronized不需要用户去手动释放锁,当synchronized代码执行完后系统会自动让线程释放对锁的占用。ReentrantLock则需用户去手动释放锁,若没有手动释放锁,就有可能导致出现死锁的现象。需要lock和unlock方法配置try-finally语句块来完成等待是否可中断synchronized不可中
2021-06-24 23:14:27 130
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人