240 发简信
IP属地:北京
  • @lanling_ 这就是最后一个例子重点说明的哈,首先要明白一个概念,只要一个对象的父对象或者祖父对象是灰色的,这个对象就是安全的。
    1. 如果一个栈被标位黑色的(曾经有过一个瞬间栈对象所指向的子对象都被标位灰色了),那么就算后面这个栈的栈对象指向别的白色对象a,这个白色对象a之前肯定有一个父节点或者祖父节点b是灰色的,所以b 会保护 a,如果当那个b删除引用的时候, shade(*slot)会把子对象c或者a变为灰色,这样a就是灰色或者被c保护了
    2. 如果这个栈还是灰色的(里面仍有栈对象是灰色的)。
    2.1 白色对象被灰色栈对象指向,就直接是安全的。
    2.2 白色对象a被栈中的黑色对象指向,因为栈对象只有在所有指向的对象都是灰色后才会标黑,所以这种情况的出现只能是在标黑之后进行指向的操作,那么肯定有一个别的非黑色对象b也指向这个白色对象a,这个非黑色的对象b是灰色的,那么就能直接保护a,如果其是白色的,那么其肯定被一个灰色的父或者祖父灰色节点c所保护,同样c也会保护a。

    golang 1.8 gc的演进

    在java的gc中,主要有三种算法,即:标记-删除,标记-整理,复制,网上有很多资料介绍相关内容,其中标记主要是为了找到内存中不可达的对象,并将其回收。而gc过程中最关键的指...

  • 不好意思,今天才看到, 是这样的哈,由于b是灰色的,所以他是能保护(shade)后面的白色对象的(灰色对象引用的所有对象全部变为灰色后自己才会变为黑色,不shade其他对象)

    golang 1.8 gc的演进

    在java的gc中,主要有三种算法,即:标记-删除,标记-整理,复制,网上有很多资料介绍相关内容,其中标记主要是为了找到内存中不可达的对象,并将其回收。而gc过程中最关键的指...

  • 120
    Spark Dag Scheduler学习记录

    简介 spark作为实时及离线合为一体的大数据计算框架,由于其出色的批处理能力及高效的流计算能力,因此在大数据中依旧有着不可撼动的地位。这篇文章来记录一下spark Job作...

  • @lanling_ 谢谢,嗯嗯,可以的

    golang 1.8 gc的演进

    在java的gc中,主要有三种算法,即:标记-删除,标记-整理,复制,网上有很多资料介绍相关内容,其中标记主要是为了找到内存中不可达的对象,并将其回收。而gc过程中最关键的指...

  • 120
    深入Linux内核架构--内存管理设计介绍

    前言 在互联网时代,大部分的应用程序基本都是IO密集型,而IO密集型的程序运行效率的关键在于内存管理,因此充分理解操作系统中内存管理是一个优秀程序员的必备知识。Linux是目...

  • 120
    深入linux内核架构--进程&线程

    简介 进程和线程这两个词,每个程序员都十分熟悉,但是想要很清晰的描述出来却有一种不知道从何说起的感觉。所以今天结合一个具体的例子来描述一下进程与线程的相关概念:在termin...

  • 120
    Should we disable linux swap?

    随着计算机硬件的飞速发展,内存的容量越来越大,服务器从最开始的几G到现在的几百G,各大公司从来都不会在内存上面吝啬,因为内存是服务稳定性的基础,为了省一点点内存而失去服务的稳...

  • 120
    深入linux内核架构--内核锁

    简介 在多线程(进程)并发模型中,多个线程如果同时处理同一块数据的话,会引发竞态问题,以及随之而来的线程安全问题。而锁是解决线程安全的重要手段,其中主要包括原子性操作atom...

  • 120
    深入linux内核架构--slab分配器

    简介 malloc对于大家来说应该都不陌生了,这是系统库给我们提供了申请指定大小内存的函数,之前介绍的伙伴系统,只能以页的方式申请内存,对于小块(小于一页)内存的申请我们就得...

  • 120
    golang 1.8 gc的演进

    在java的gc中,主要有三种算法,即:标记-删除,标记-整理,复制,网上有很多资料介绍相关内容,其中标记主要是为了找到内存中不可达的对象,并将其回收。而gc过程中最关键的指...

  • 120
    深入linux内核架构--内存屏障

    简介 之前在看volatile 可见性的时候,经常会看到内存屏障,但是对于其基本原理似懂非懂,也对于内存屏障是如何保障多个CPU之间的数据可见性保持好奇,网上的博客基本上只是...

  • PGone承认与李小璐恋情:爱情没有错,错的是贾乃亮爱错了人

    01 近日,网络上爆出李小璐与PGone三段自拍视频,已为人妻的李小璐与说唱歌手PGone在镜头前“环抱、亲嘴、比心、摸下巴、十指相扣”,视频尺寸之大,让人惊掉下巴。 不知道...

  • 120
    深入linux内核架构--核心调度器

    内存中保存了每个进程的唯一描述信息,并通过若干结构与其他进程连接起来,那么调度器的核心任务就是高效公平的执行各个进程中的内存代码段。那么一个好的调度器,需要满足哪些条件呢? ...

  • 120
    深入linux内核架构--虚拟文件系统(mount及lookup)

    前情提要 上一篇文章对VFS做了一下简单介绍,基本理解到VFS中的基本数据结构为super_block,dentry,inode,address_space及file;其中s...

  • 120
    关于spark中rdd.sortByKey的简单分析

    基本介绍 最近在做一个文件archive的事情,其中需要对目录文件下的索引排序,最开始是用的内部归并排序,这在目录里面文件还比较少的时候,没什么大问题;但是发现有一个目录下的...

  • 120
    深入linux内核架构--虚拟文件系统(简介)

    在Linux中,“万物兼文件”,我们知道在linux下面有很多文件系统,如EXT/2/3/4,XFS等,为了很好的支持各种类型的文件系统,Linux抽象了一层虚拟文件系统层,...

  • 120
    深入linux内核架构--内存管理(非连续分配)

    非连续页分配   对于内核来说,最好的情况当然是分配连续的物理内存,这样效率高,分配简单,但是这只是理想情况。当系统运行较长时间后,会产生大量碎片,导致内核内存中没有连续的大...

  • 120
    深入linux内核架构--内存管理(伙伴系统)

    伙伴系统   伙伴系统承担内核初始完后的物理内存管理工作,负责管理各个zone中的物理内存分配,释放。其基本工作原理如下: 把内存按照页划分成很多阶,最大阶为MAX_ORDE...

  • 120
    深入linux内核架构--内存管理(简介)

    前言   内存管理其实是一个很基本的概念,但是真正能把linux内存管理梳理清楚的人很少,也看过网上很多关于内存管理的文章,但是总感觉他们其实也是照搬的一些概念,都不是很系统...