|
|
|
Back to newsletter 216 contents
This month and next month I'll highlight the very best of the over 300 tips I've extracted this year. The top tip of the year was on development techniques that apply to different latency targets, and was so good I turned it into July's newsletter.
My next choice of "tips of the year" is another set of development techniques, actually a combination of a set of tips on thread-safe techniques. Combining them into one makes for a single killer tip: Avoid state; Avoid shared state; Use a single-consumer-queue with updates executed by a single thread; Use immutable state; Use mature concurrent datastructures; Use synchronized blocks; Use volatile fields but only when the writes to the field do not depend on the current value of the field; Use atomic updates.
My third choice for "tips of the year" is one giving advice on managing your systems: Monitoring does not fix problems - if you find yourself constantly adding more monitoring for a service, stop and invest your effort into making the service more stable and resilient. More monitoring doesn't fix a broken system, and it's not an improvement for a broken service.
My final choice of "tips of the year" for this month is a secret technique that performance experts use to magically go from GC logs to telling you about your system IO or CPU (rather than about your GC): If the ratio '(user+sys)/real' is significantly less than 1 for a GC log entry, this is a good indication of a problem with the system - either IO is causing the GC to be blocked for a while, or CPU is saturated on the system by activity from other processes.
Now on to this month's tips, tools, news, articles, and talks from our extensive community. And of course the tips from this month's articles and talks, as ever are extracted into this month's tips page.
Java performance tuning related news.
Java performance tuning related tools.
Back to newsletter 216 contents