语言中,可以通过malloc进行分配内存,使用free回收,这样手动回收对开发者负荷过大,所以产生了其他的高级语言,使用了自身的一套内存管理机制进行自动回收
例如 php,java,golang等语言...php
$a = new stdClass();
$b = new stdClass();
$b->a = $a;
xdebug_debug_zval('a');
xdebug_debug_zval... stdClass { public $a = (refcount=2, is_ref=0)=class stdClass { } }
可以看到,在php中,变量a次数为2,原因是b变量引用过一次,同时由于...php
$a = new stdClass();
$b = new stdClass();
$b->a = $a;
$a->b = $b;
xdebug_debug_zval('a');
xdebug_debug_zval...当gc结束后,白色的对象A被删除,就会导致黑色节点应用的数据异常
为了解决这个问题,我们需要额外增加 "屏障机制"
三色回收屏障机制
为了解决上面的问题,我们引入2种规则即可保证对象A不会被删除,这个规则就是