Hacker News Comments on
Java Performance
·
4
HN comments
- This course is unranked · view top recommended courses
Hacker News Stories and Comments
All the comments and stories posted to Hacker News that reference this book.https://www.amazon.com/Java-Performance-Charlie-Hunt/dp/0137...https://www.amazon.com/Java-Performance-Companion-Charlie-Hu...
https://www.amazon.com/Java-Performance-Definitive-Guide-Get...
See the logs he posted[Full GC
][PSYoungGen: 10752K->9707K(142848K)] [ParOldGen: 232384K->232244K(485888K)] 243136K->241951K(628736K) [PSPermGen: 3162K->3161K(21504K)], 1,5265450 secs
-> parallel old
A full GC frees 140k of old 1045k of young memory. He's almost running out of memory with parallel old. He needs to run a way larger heap. G1 isn't going to be any better with a live set the size he has in combination with his max heap.
All this explained in Java Performance [1] http://www.amazon.com/Java-Performance-Charlie-Hunt/dp/01371...
From the link I see:> The following example JVM settings are recommended for most production engine tier servers: -server -Xms24G -Xmx24G -XX:PermSize=512m -XX:+UseG1GC -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=20 -XX:ConcGCThreads=5 -XX:InitiatingHeapOccupancyPercent=70
So Oracle mentions 200ms for most prod use. I am not sure how you are able to deduct ~10ms pause from that link.
And just because one can configure ~10ms does not mean at JVM will start respecting it. There is nothing in any official document by Oracle about max GC pause time. The results Google threw are mostly around ~150ms as min pause.
> It also has a state-of-the-art generational GC.
And it needs something like
http://www.amazon.com/Java-Performance-Charlie-Hunt/dp/01371...
to do what JVM can do in theory. In practice as a java users I am used to seeing ~20-30 sec pauses for Full GC.
The only effort in open for sub 10ms GC for large heaps is Project Shenandoah:
http://openjdk.java.net/jeps/189
and it is long way from availability.
⬐ pcwaltonYou can ask for 10ms latency and you will get it. This is basic functionality of any incremental/concurrent GC. The throughput will suffer if you do that. But HotSpot's GC is far beyond that of Go in regards to throughput, for the simple fact that it's generational.Nongenerational GC pretty much always without exception loses to generational in heavily GC'd languages like Java and Go. There is no silver bullet for GC; it requires lots of hard engineering work, and HotSpot is way ahead.
Better update the title with this one:Java Performance: http://www.amazon.com/Java-Performance-Charlie-Hunt/dp/01371...
Java Puzzlers is helpful if you're doing low-level programming using Java. I find it to be less useful for app development.