堆栈(操作系统):由操作系统(编译器)自动分配和释放,功能的参数值,局部变量的值等。ITS操作方法与数据结构中的堆栈相似。
堆(操作系统):通常由程序员分发和发布。如果未发布程序员,则可以在程序末尾通过OS恢复程序。分布方法类似于链接列表。
堆栈使用第一个类别的缓存。它们通常在被调用时在存储空间中,并立即释放呼叫。
堆存储在次要缓存中,生命周期是由虚拟机的垃圾回收算法确定的(一旦成为孤儿对象,就无法将其回收,因此调用这些对象的速度相对较低。
包装(数据结构):可以将堆视为树,例如:堆栈排序。
堆栈(数据结构):高级数据结构。
问题:
缺点:如果三色标记不受STW的保护,同时符合下面的两个条件,则会发生损失
条件1黑色对象引用了白色对象
条件2灰色物体和它之间的白色对象被破坏
强和弱的三色 - 颜色不变1.强三彩 - 不变强制性不允许黑色对象引用白色对象
2.弱的三色非变化黑色对象可以引用白色对象,但是该白色对象必须在上游具有灰色对象。
屏障机构1.引用屏障对象。当A对象引用B对象时,B对象被标记为灰色。
满足强壮的三色不变
插入障碍的保险:最后,您需要扫描STW的堆栈
2.删除删除时要触发的屏障对象,并删除对象。如果是灰色或白色,则标记为灰色。
满足弱的三色不变
删除缺乏障碍:即使一个物体变成孤儿对象,它也可以在这一轮GC中生存并在下一轮GC中清理
1. GC开始扫描堆栈上的所有对象,并将其标记为黑色(之后没有第二次重复扫描,没有STW),
2.在GC期间,堆栈上创建的任何新对象都是黑色。
3.删除的对象被标记为灰色。
4.添加的对象标记为灰色。