垃圾回收算法
垃圾回收垃圾回收(Garbage Collection)是一种自动化的内存管理机制,用于回收不再被程序使用的内存空间。在编程中,当创建对象或分配内存时,需要相应地释放这些对象或内存以防止内存泄漏和资源浪费。垃圾回收的主要目的是通过自动检测和回收不再被程序使用的内存,减轻开发者的负担,并提供更可靠和高效的内存管理。
垃圾回收器(Garbage Collector)是负责执行垃圾回收的程序组件。它会周期性地扫描程序中的内存,找出那些不再被任何引用指向的对象,将其标记为垃圾对象,并释放它们所占用的内存空间。通过垃圾回收,可以自动回收不再需要的内存,避免内存泄漏和内存溢出问题,提高程序的稳定性和性能。
垃圾回收的工作原理是基于对象的可达性。垃圾回收器通过检测对象之间的引用关系,从一组称为”根对象”的起始点开始,遍历整个对象图,标记所有与根对象可达的对象。任何未被标记的对象都被认为是不可达的,即为垃圾对象,可以被回收。
垃圾回收的好处包括:
简化内存管理:垃圾回收机制自动处理内存的分配和释放,减轻了开发者手动管理内存的负担,简化了程序的编写和维护。
避免内存泄漏:通过及时回收不再使用的内存, ...
锁
什么是锁引入锁的概念是为了解决多线程/多进程并发访问共享资源时可能出现的数据竞争和不一致性的问题。
数据竞争:在多线程环境中,当多个线程同时访问和修改共享数据时,由于执行顺序的不确定性,可能导致数据竞争。数据竞争可能会导致不可预测的结果和程序错误,如读取脏数据、数据丢失、计算错误等。
数据一致性:共享资源的一致性是指在并发访问下,多个线程或进程之间对共享资源的访问和修改应该满足某种逻辑约束或约定。通过引入锁机制,可以确保在任意时刻只有一个线程或进程能够访问共享资源,从而维护数据的一致性。
线程安全性:引入锁可以实现线程安全性,即在多线程环境中,对共享资源的访问操作不会导致不正确或不一致的结果。使用锁可以保护临界区(critical section)的代码片段,确保在同一时间只有一个线程可以进入临界区执行代码,从而避免了并发访问带来的问题。
同步机制:锁作为一种同步机制,可以协调多个线程或进程之间的执行顺序,以确保线程间操作的有序性。通过锁,可以实现线程的互斥访问和顺序执行,从而控制和协调多个线程之间的交互。
临界区(Critical Section)是指在多线程 ...
缘起
左耳朵耗子死了。说实话在听闻左耳朵耗子噩耗之前,我从来没有听说过他,也没读过他的博客。那段时间我还在一直不断的试图美化自己的简历,让自己能够赶快逃离身处的魔窟,希望能够在这个乱世寻找一份更好的工作。看见太多的人开始悼念他,我抱着试试看的心态登录了他的博客,了解了他的生平,颇为震撼。其实我对年纪大的中国互联网人是普遍没什么好感的,在我短暂的三年工作经历中,接触到不少的互联网人,让我容易下意识的觉得多数国内老一代的互联网人不过是占尽了互联网时代的红利,而他们所谓的哪些“技术”,不过是时间和KPI留在他们身上的印记罢了。左耳朵耗子很大程度上改变了我的看法,我看到了一个热衷技术,充满活力的大龄互联网创业青年。也让我深深的感受到了自身的不足。
重新开始写博客很大程度上是受到了左耳朵耗子学而不倦的影响。一年半之前我从字节跳槽到了外企,那个时候的我刚刚结束了将近两年的卷王生涯。刚刚进入字节的时候,承蒙我第一任领导的器重,让原本1-2的我在一年多的时间里接手了一个大型项目。改bug的日子很苦,但是回头看来这种“折磨”让我获得了比同龄人更多的经验。跳槽以后,没有了当年字节的技术氛围,困于业务的泥淖之中, ...
