3 ms·
this isn't fully true. Java is in the process of getting lxr which is uses both tracing and reference counting.
by adgjlsfhk1 4y ago
this isn't fully true. Java is in the process of getting lxr which is uses both tracing and reference counting.
- NobleExpress 4y agoYes and no. LXR is a highly optimized deferred and coalesced reference counting (amongst many other optimizations) GC and it looks nothing like the RC implementations you see in other languages like Python, Nim, Swift, etc. So yes, reference counting can be performant, _but_ only if you are using a deferred and coalesced implementation as otherwise the simple implementation requires atomic operations for every pointer read/write operation (though compilers could optimize it to use non-atomic operations when it's sure semantics are preserved). EDIT: The post you're responding to is referring to the simple standard implementation of RC.
- vlovich123 4y agoRust doesn’t use multi threaded Rc unless you actually need to send it across threads.
- NobleExpress 4y agoI'm aware. Rust isn't a conventional "managed language" which is why I consciously omitted it from the above list. In an increasingly multi-threaded world, you just have to use the synchronized version of RC (aka Arc<T> in Rust).