一觉睡到小时候
垃圾回收算法(7)-分代回收算法 垃圾回收算法(7)-分代回收算法
前言Java 中的堆是 JVM 所管理的最大的一块内存空间,主要用于存放各种类的实例对象。在 Java 中,堆被划分成两个不同的区域:年轻代 ( Young )、老年代 ( Tenured)。年轻代 ( Young ) 又被划分为三个区域:
2020-07-12
垃圾回收算法(5)-标记整理算法 垃圾回收算法(5)-标记整理算法
前言标记清除算法的确可以应用在老年代中,但是该算法不仅执行效率低下,而且在执行完内存回收后会产生内存碎片。所以JVM的设计者在此基础上做了改进,标记压缩法(也称标记整理法)由此诞生。 算法原理当成功标记出内存中的垃圾对象之后,标记压缩法会将
2020-07-09
垃圾回收算法(4)-复制算法 垃圾回收算法(4)-复制算法
算法原理复制算法首先将或者的内存空间分为2块,每次只使用其中一块,在垃圾会搜时将正在使用的内存中的存活对象复制到未被使用的内存块中,之后清楚正在使用的内存块中的所有对象,交换2个内存的角色,最后完成垃圾回收。 年轻代中的GCHotSpot
2020-07-09
垃圾回收算法(6)-增量算法 垃圾回收算法(6)-增量算法
前言在垃圾回收过程中,应用软件处于一种Stop the World的状态。在Stop the World的状态下,应用程序的所有线程都会挂起,暂停一切工作,等待垃圾回收的完成。如果垃圾回收时间过长,应用程序会被挂起很久,将严重影响用户体验或
2020-07-09
垃圾回收算法(3)-标记清除算法 垃圾回收算法(3)-标记清除算法
前言标记清除算法(Mark-Sweep)是一种非常基础和常见的垃圾收集算法,该算法被J.McCarthy等人在1960年提出并成功的发明并应用于Lisp语言。 涉及概念先来了解一下mutator和collector。这2个名词经常在垃圾收集
2020-07-08
垃圾回收算法(2)-根搜索算法 垃圾回收算法(2)-根搜索算法
前言相对于引用计数算法而言,根搜索算法不仅同样具备实现简单和执行高效等特点,更重要的是该算法可以有效的解决在引用记数法中一些已经死亡的对象因为相互引用而导致的无法正确被标记的问题,防止内存泄漏的发生。 算法原理根搜索算法是以根对象集合为起始
2020-07-07
垃圾回收算法(1)-引用计数法 垃圾回收算法(1)-引用计数法
算法原理引用记数法在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活的对象,哪些是已经死亡的对象,只有被标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间。 比如说,当我们编写以下代码时 String p = ne
2020-07-07
面向对象的7种设计原则(7)-开闭原则 面向对象的7种设计原则(7)-开闭原则
开闭原则开闭原则是面向对象世界里最基础的设计原则,它指导我们如何建立一个稳定,灵活,可扩展的系统。开闭原则定义如下: Software entities like classes,modules and functions should
2020-07-06
面向对象的7种设计原则(6)-迪米特原则 面向对象的7种设计原则(6)-迪米特原则
迪米特原则 迪米特原则(Law of Demeter)又叫最少知道原则(Least Knowledge Principle),可以简单说成:talk only to your immediate friends,只与你直接的朋友们通信,不要
2020-07-06
面向对象的7种设计原则(5)-里氏代换原则 面向对象的7种设计原则(5)-里氏代换原则
定义里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的
2020-07-05
面向对象的7种设计原则(4)-合成聚合复用原则 面向对象的7种设计原则(4)-合成聚合复用原则
合成复用原则在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分;新的对象通过向这些对象的委派达到复用这些对象的目的。 如果两个类是“Has-a”关系应使用合成、聚合,如果是“Is-a”关系可使用继承。”Is-A”是严格的分类学意义
2020-07-04
面向对象的7种设计原则(3)-依赖倒置原则 面向对象的7种设计原则(3)-依赖倒置原则
依赖倒置原则 High level modules should not depend upon low level modules.Both should depend upon abstractions.高层模块不应该依赖低层模块,两者
2020-07-01
1 / 5