6 ms·
Please don't write pauseless if there are short pauses. Pauseless in the Java GC context is a marketing scam.
by pebal 1y ago
Please don't write pauseless if there are short pauses. Pauseless in the Java GC context is a marketing scam.
- pron 1y agoWe call them low-latency GCs, but I was responding to a comment that called the same thing "pausless". However, even programs without any GC pauses can have pauses of a similar duration due to OS activity, so programs on regular OS aren't generally pauseless anyway and the term is mostly meaningless in most contexts. As a marketing term (which we don't use) it merely means the application won't experience GC-related pauses that are longer than OS-related pauses.
- pebal 1y agoThis is some weird way of counting. A system pause plus a GC pause is two pauses. Just because one pause can't be avoided doesn't mean you can introduce more pauses.
- pron 1y agoJust to be clear, the pause in ZGC is done as an optimisation of thread synchronisation (there's no GC work done in the pause). It's just as easy to do things without anything you would consider a pause, only it's less efficient. Momentarily stopping all program threads is just an efficient way to deliver a message to all threads considering that the OS might have some threads descheduled. At the end of the day, we care about the latency for some particular thread(s), and truly minimising that at this level requires a realtime kernel (that comes with significant performance disadvantages).
- ignoramous 1y ago> I was responding to a comment that called the same thing "pausless" In my defense, I called it "~pauseless" (as in, roughly pauseless).
- vips7L 1y agoPebal is really pedantic about the term in every thread. Because apparently only he has ever achieved pause free GC for his C++ gc.
- gunnarmorling 1y agoUnless you are on a realtime OS, you may see longer pauses from the OS due to scheduling other processes, so I think it's fair to consider the new low-latency collectors (Shenandoah, ZGC) pauseless from a practical point of view.
- pebal 1y agoYou can't call GC pauseless if it introduces pauses. We don't say something is free if you have to pay little for it. We say it's cheap.
- adambatkin 1y agoI think as a technical term, pausless (as used here) has a specific meaning, just like real-time has a specific technical meaning (not literally 0 latency since that's generally physically impossible).