3 ms·
Hence my question.
by mike_hock 7y ago
Hence my question.
- chrisseaton 7y agoI still don't understand your question, sorry: > can't the regular GCs just not clean up on program exit Why do you need to clean up your memory - at all, GC or otherwise - on program exit? The process and all its resources will be gone.
- peterwwillis 7y agoThe question was rhetorical; you and OP are saying the same thing.
- pests 7y agoI think the concern is those resources might be external and not cleaning up correctly leaves them in an inconsistent state. Not saying this is best practice but I've seen it done.
- chrisseaton 7y agoFinalisers are not guaranteed to be called by GC in theory, and in practice they run asynchronously even if they are going to be called, so aren't likely to be called if you GC and then exit. So how does calling GC help with anything?
- pests 7y agoI agree with you and how it's not reliable. I just remember the Rust community going through this same kerfuffle with their Drop trait not being guaranteed not too long ago.
- steveklabnik 7y agoThat was four and a half years ago; time flies!
- mike_hock 7y agoBut regular GCs DO run at the end of the program, so my question was, why don't they just skip the final cleanup.
- chrisseaton 7y ago> But regular GCs DO run at the end of the program Which GCs do that? I'm not aware of any.
- balfirevic 7y agoThe article (apparently falsely) claims that default JVM GC does that: "Short-running programs, like all programs, invoke the garbage collector at the end of their run."
- MaxBarraclough 7y agoUnless I'm missing something, the only reason you'd run a GC cycle on termination is to invoke finalizers. If the platform doesn't feature finalizers, or if it is known that they've not been used, there'd be no point at all.