自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 进程和线程的区别与联系

内核态:cpu可以访问内存所有数据,包括外围设备,例如硬盘,网卡,cpu也可以将自己从一个程序切换到另一个程序。用户态:只能受限的访问内存,且不能访问外围设备,占用cpu的能力被剥夺,cpu资源可以被其他程序获取。java中中断唤醒就需要使用到内核态。为什么需要划分内核态和系统态?进程是正在系统上运行的程序。线程崩溃必然会使进程崩溃吗?

2024-12-09 10:15:00 507

原创 BIO NOP AIO的区别

BIO (Blocking I/O):NIO (New I/O):AIO (Asynchronous I/O):

2024-12-08 13:00:00 447

原创 JVM相关面试题

如果只有一个线程才可以操作此数据,则必是线程安全。如果有多个线程操作此数据,则此数据是共享数据。如果不考虑同步机制的话,会存在线程安全问题。如果对象是在内部产生,并在内部消亡,没有返回到外部,那么是线程安全的,反之是线程不安全的。

2024-12-08 06:15:00 465

原创 G1收集器基础知识二

就会对垃圾收集器造成负面影响。为了解决这个所以创建出H区。如果一**个H区装不下一个大对象,那么G1会找连续的H区来存储。**为了能找到连续的H区,有时候不得不启动Full GC。G1的大多数行为都把H区作为老年代的一部分来看待。顺时针:Young GC ->Young GC+Concurrent Marking ->Mixed GC,进行垃圾回收。对于堆中的大对象,默认直接回分配到老年代,但是如果是一个。

2024-12-07 23:00:00 640

原创 G1收集器基础知识三

YGC时,首先G1停止应用程序的执行(Stop-The-World),G1创建回收集(Collection Set),回收集是指需要被回收的内存分段的集合,年轻代回收过程的回收集包含年轻代Eden区和Survivor区所有的内存分段。JVM启动时,G1先准备好Eden区,程序在运行过程中不断创建对象到Eden区,当Eden空间耗尽时,G1会启动一次年轻代垃圾回收过程。年轻代回收只回收Eden区和Survivor区。回收完E和S区,剩余存活的对象会复制到新的S区。S区达到一定的阈值可以晋升为O区。

2024-12-07 05:00:00 765

原创 G1收集器基础知识

这是G1相对于CMS的另一大优势,G1除了追求低停顿外,还能建立可预测的停顿时间模型,能让使用者明确指定在一个长度为M毫秒的时间片段内,消耗在垃圾收集上的时间不得超过N毫秒。G1中提供了三种垃圾回收模式:YoungGC、Mixed GC和Full GC,在不同的条件下被触发。为什么还需要G1呢?

2024-12-06 19:30:00 892

原创 CMS算法

答案其实很简答,因为当并发清除的时候,用Compact整理内存的话,原来的用户线程使用的内存还怎么用呢?所以在JDK1.5中使用CMS来收集老年代的时候,新生代只能选择ParNew或者Serial收集器中的一个。CMS整个过程比之前的收集器要复杂,整个过程分为4个主要阶段,即初始标记阶段、并发标记阶段、重新标记阶段和并发清除阶段。CMS的垃圾收集算法采用标记-清除算法,并且也会"Stop-the-World"。CMS收集器的关注点是尽可能缩短垃圾收集时用户线程的停顿时间。

2024-12-06 02:00:00 2154

原创 Parallel回收器

HotSpot的年轻代中除了拥有ParNew收集是基于并发回收之外,Parallel Scavenge收集器同样也采用了复制算法、并行回收和"Stop the World"机制。高吞吐量则可以高效率地利用CPU时间,尽快完成程序的运算任务,。因此,常见在服务器环境中使用。例如,那些执行批量处理、订单处理、工资支付、科学计算的应用程序。

2024-12-05 10:15:00 865

原创 Serial和ParNew回收器

的方式执行内存回收外,和Serial收集器几乎没有任何区别。ParNew收集器在年轻代中同样也是采用复制算法、"Stop-the-World"机制。由于ParNew收集器基于并行回收,那么是否可以断定ParNew收集器的回收效率在任何场景下都会比Serial收集器更高效?ParNew是很多JVM运行在Server模式下的新生代默认垃圾收集器。ParNew收集器则是Serial收集器的多线程版本。对于老年代,回收次数少,使用串行方式节省资源。对于新生代,回收次数频繁,使用并行高效。

2024-12-05 03:30:00 321

原创 垃圾回收期概述

垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。从不同角度分析垃圾收集器,可以将GC分为不同的类型。

2024-12-04 22:18:12 1573

原创 虚拟机记忆集合卡表 对象引用

当内存空间还足够时,则保存在内存中,如果内存空间在进行垃圾回收后还是很紧张,则可以抛弃这些对象。强引用软引用弱引用虚引用这四种引用强度逐渐减弱。除强引用外,其他三种引用都可以在java.lang.ref包中找到。Reference子类中只有终结器引用是包内可见的,其他3种引用类型均为public,可以在应用程序中直接使用。强引用(StrongReference):最传统的“引用”的定义,是指在程序代码之中普遍存在的引用赋值,即类似“”这种引用关系。

2024-12-04 22:16:35 1506

原创 读写锁ReentrantReadWriteLock的原理

如果当前要获取读锁的线程已经持有了写锁,则也可以获取读锁。但是当一个线程先获取了写锁,然后读锁处理事情完毕之后,要记得把读锁和写锁都释放掉,不能只释放读锁。

2024-12-03 19:07:40 319 2

原创 独占锁ReentrantLock

可重入独占锁,同时只能有一个线程可以获取该锁,其他获取该锁的线程会被阻塞而被放入改锁的阻塞队列中。

2024-12-03 19:07:10 520

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除