#1 drawback = “island”. Probably uncurable.
#2 drawback = “unavoidable overhead” in terms of ref-counter updates for (almost) every assign and every “unassign”
The #2 drawback is not the only “unavoidable overhead” — There’s also an unavoidable overhead in a handle-table compactor GC, which
maps every variable  to a handle, and every handle to an address in the jvm’s memory space. This adds one additional level to a
direct variable-addr mapping. Probably additional CPU cycle required for every variable load or store.
ref-counter is the only GC without root objects.
 Most if not all other GC algorithms add overheads in other ways but They don’t add overhead for every single assign.
 overheads = additional CPU cycles
 excluding primitives