![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java面试专题
文章平均质量分 73
Smartaotao
每个人身上都有一种潜能,只要有爱存在,那种力量呢将会无比强大!
展开
-
Java面试专题十之Linux
pidstat -d 采样间隔秒数 -p 进程号。原创 2023-01-13 22:06:41 · 373 阅读 · 0 评论 -
Java面试专题九之GC
GC算法()是内存回收的方法论,垃圾收集器就是算法落地的实现。四种主要垃圾收集器:垃圾回收的方式:Serial、Parallel、CMS、G1串行垃圾回收器(Serial):它为单线程环境设计且只使用一个线程进行垃圾回收,会暂停所有的用户线程。所以不适合服务器环境;并行垃圾回收器(Parallel):多个垃圾收集线程并行工作,此时用户线程是暂停的,适用于科学计算/大数据处理首台处理等弱交互场景;原创 2023-01-12 21:13:47 · 213 阅读 · 0 评论 -
Java面试专题八之OOM
GC回收时间过长时会抛出0utofMemroyError。过长的定义是,超过98%的时间用来做GC并且回收了不到2%的堆内存。连续多次GC 都只回收了不到2%的极端情况下才会抛出。假如不抛出 GC overhead limit 错误会发生什么情况呢?那就是GC清理的这么点内存很快会再次填满,追使GC再次执行,这样就形成恶性循环,一直是100%,而GC却没有任何成果。原创 2023-01-10 23:47:32 · 54 阅读 · 0 评论 -
Java面试专题七之Reference
当内存不足,JVM开始垃圾回收,对于强引用的对象,就算是出现了OOM也不会对该对象进行回收,死都不收。强引用是我们最常见的普通对象引用,只要还有强引用指向一个对象,就能表明对象还“活着”,垃圾收集器不会碰这种对象。在 Java中最常见的就是强引用,把一个对象赋给一个引用变量,这个引用变量就是一个强引用。当一个对象被强引用变量引用时,它处于可达状态,它是不可能被垃圾回收机制回收的,即使该对象以后永远都不会被用到JVM也不会回收。因此强引用是造成Java内存泄漏的主要原因之一。原创 2023-01-07 23:53:30 · 62 阅读 · 0 评论 -
Java面试专题六之JVM、GC
引用计数复制标记清除标记整理。原创 2023-01-05 22:58:14 · 51 阅读 · 0 评论 -
Java面试专题五
死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种瓦相等待的现象,若无外力干涉那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。Java 中的线程池是通过 Executor 框架实现的,该框架中用到了 Executor,Executors,ExecutorService,ThreadPoolExecutor这几个类。threadFactory:表示生成线程池中工作线程的线程工厂,用于创建线程的一般用默认的即可。原创 2022-12-21 15:30:12 · 56 阅读 · 0 评论 -
Java面试专题四
在多线程领域:所谓阻塞,在某些情况下会挂起线程(即阻塞),一旦条件满足,被挂起的线程又会自动。阻寨队列,顾名思义,首先它是一个队列,而一个阻塞队列在数据结构中所起的作用大致如下图所示。试图从空的阻寒队列中获取元素的线程将会被阻寒,直到其他的线程往空的队列插入新的元素。当阻寨队列是空时,从队列中获取元素的操作将会被阻寨;:不存储元素的阻塞队列,也即单个元素的队列。原创 2022-12-19 00:32:48 · 53 阅读 · 0 评论 -
Java面试专题三
它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,宜到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活,线程进入屏障通过CyclicBarrier的await()方法。CountDownLatch主要有两个方法,当一个或多个线程调用await方法时,调用线程会被阻塞。其它线程调用countDown方法会将计数器减1(调用countDown方法的线程不会阻塞)当计数器的值变为零时,因调用await方法被阻塞的线程会被唤醒,继续执行。的互斥使用,另一个用于。原创 2022-12-12 00:20:24 · 50 阅读 · 0 评论 -
Java面试专题二
公平锁,就是很公平,在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,以后会按照FIFO的规则从队列中取到自己。指的是同一线程外层函数获得锁之后 ,内层递归函数仍然能获取该锁的代码,在同一个线程在外层方法获取锁的时候,在进入内层方法会自动获取锁。【非公平锁】指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。【公平锁】指多个线程按照申请锁的顺序来获取锁,类似排队打饭,先来后到;原创 2022-12-09 00:06:35 · 53 阅读 · 0 评论 -
Java面试专题一
volatile是Java虚拟机提供的Java内存模型(Java Memory Model)本身是一种抽象的概念,并不真实存在,描述的是一组规范或规则,通过这组规范定义了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步的规定:1、线程解锁前,必须把共享变量的值刷新回主内存2、线程加锁前,必须读取主内存的最新值到自己的工作内存3、加锁解锁是同一把锁。原创 2022-12-02 00:06:13 · 103 阅读 · 0 评论