
java基础
文章平均质量分 90
java相关知识
xujingyiss
这个作者很懒,什么都没留下…
展开
-
JVM垃圾回收算法与垃圾收集器
垃圾回收算法是内存回收的方法论,而垃圾收集器是内存回收的具体实现。垃圾回收算法主要包含4 种垃圾回收算法标记-清除算法分为【标记】和【清除】两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。"标记-清除算法"是最基础的收集算法,效率也很高,但是会带来两个明显的问题:效率问题 空间问题(标记清除后会产生大量不连续的碎片)复制算法为了解决效率问题,“复制”收集算法出现了。它将内存分为大小相同的两块,每次使用其中的一块。当这一块的内存使...原创 2021-12-23 11:51:35 · 390 阅读 · 0 评论 -
JVM判断对象是否可以被回收
引用计数法给对象中添加一个引用计数器每当有一个地方引用它,计数器就加1; 当引用失效,计数器就减1; 任何时候计数器为0的对象就是不可能再被使用的。这个方法实现简单,效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因是它很难解决对象之间相互循环引用的问题。GC Roots介绍可达性分析算法前,首先需要了解下 GC Roots。哪些对象可以作为 GC Roots?可达性分析算法可达性分析算法可以解决循环引用的问题。基本思想:通过一系列的称为原创 2021-12-20 17:10:25 · 297 阅读 · 0 评论 -
JVM内存分配与回收机制
Minor GC 和 Full GCMinor GC(Young GC):指发生新生代的的垃圾收集动作,Minor GC 非常频繁,回收速度一般也比较快。 Full GC(Major GC):一般会回收老年代,年轻代,方法区的垃圾, Full GC的 速度一般会比 Minor GC 的慢10倍以上。对象优先在Eden区分配大多数情况下,对象在新生代中 Eden 区分配。当 Eden 区没有足够空间进行分配时,虚拟机将发起一次 Minor GC。先看一个示例:jvm参数设置:...原创 2021-12-16 17:02:06 · 1003 阅读 · 0 评论 -
Java虚拟机之内存结构
JVM内存模型(运行时数据区)程序计数器 (线程私有)Program Counter Register并非广义上所指的物理寄存器,而是对物理PC寄存器的一种抽象模拟。用来存储执行下一条要执行的指令的地址,也就是将要执行的指令代码, 由执行引擎读取下一条指令。是一块很小的内存空间,小到可以忽略不计线程私有,生命周期也和线程保持一致任何时间,一个线程只有一个方法在执行,叫做当前方法。程序计数器会存储当前线程执行的方法的JVM指令地址;或者如果执行的是native方法,则是未指定值..原创 2021-12-20 21:51:10 · 395 阅读 · 0 评论 -
Java虚拟机之类装载子系统
java虚拟机组成Java虚拟机由三部分组成:运行时数据区,类装载子系统,字节码执行引擎。类装载子系统负责把一个类(.class)加载到运行时数据区中;类加载机制一般自己写的类,是在使用到时(new xxx()),才会加载到内存中去。类加载指的是:将字节码文件(.class),加载到jvm运行时数据区。加载 ->验证 ->准备 ->解析->初始化加载通过一个类的【全限定名】获取定义此类的【二进制字节流】 将这个二进制字节流所代表的...原创 2021-12-14 15:48:31 · 941 阅读 · 1 评论 -
HashMap底层原理及源码解析
底层数据结构jdk1.8中,HashMap 使用了 数组 + (链表 or 红黑树) 的结构。数组的优势是随机读取和修改效率高。缺点是插入和删除效率低。 链表的优势是插入和删除效率高,容易扩展 。缺点是随机读取和修改效率低。HashMap 结合了数组和链表的优点,查询、修改、插入、删除的效率都很高!插入原理 调用key的hashcode()得到hash值,然后将hash值转换成数组下标。数组中的元素是一个单向链表(jdk1.8中,当链表中的数据达到8个,会自动转化为红黑树) ..原创 2021-11-04 11:39:13 · 336 阅读 · 0 评论