Subscribe: JavaPerformanceTuning.com News
http://www.javaperformancetuning.com/newsletters.rss
Preview: JavaPerformanceTuning.com News

JavaPerformanceTuning.com News



JavaPerformanceTuning.com lists all the information and resources available for Java performance tuning



Published: Tue, 27 Jun 2017 12:44:00 GMT

Last Build Date: Tue, 27 Jun 2017 12:44:00 GMT

Copyright: Copyright 2000-2017, Jack Shirazi
 



Java Performance News June 2017
We list all the latest Java performance related news and articles. "The 'concurrency, data size and responsiveness' 3 axes of performance are particularly useful for characterising the need for performance and memory efficiency during development: they tell you when you need to go beyond good coding practices to achieve performance goals"



June 2017 New Java Performance Tips
The latest Java performance tips from around the web, like "5 ways to do atomic optimistic reads on multiple fields are: StampedLock, AtomicReference, AtomicReferenceFieldUpdater, Unsafe, VarHandle."



Java Performance News May 2017
We list all the latest Java performance related news and articles. "The slides are available and give you a fairly complete grounding in how to handle all the most common types of performance and memory problems"



May 2017 New Java Performance Tips
The latest Java performance tips from around the web, like "GPUs are suitable where the problem can be massively parallelized, and there is a lot of data that needs processing. Machine learning is an excellent example. GPUs excel at running multiples of the same operation at once."



Java Performance News April 2017
We list all the latest Java performance related news and articles. "'ParNew + SerialOld : -XX:+UseParNewGC', was the optimal garbage collector combination if you were targeting footprint size in bi-stable heaps"



April 2017 New Java Performance Tips
The latest Java performance tips from around the web, like "Java 9 recommended GC logging parameters are -Xlog:gc*,gc+ref=debug,gc+age=trace,gc+heap=debug:file=gc%p%t.log:tags,uptime,time:filecount=10,filesize=10m (you may need to delete some options for your use)"



Java Performance News March 2017
We list all the latest Java performance related news and articles. "If you really want to have memory-pressure sensitive cache, encapsulate your preferred cache and add separate functionality which detects memory pressure with SoftReference instance just for that"



March 2017 New Java Performance Tips
The latest Java performance tips from around the web, like "Typical tuning options at the CPU level include: reduce the number of instructions needed to execute the algorithm; change the data structure to reduce memory stalls (waiting for memory); change the program logic to reduce branch stalls (eg from mispredicted branches); change the order of operations so that they execute in parallel across the cores more easily (if in a loop each subsequent operation depends on the result of the last one, this is difficult); breakdown long latency operations into multiple simpler ones"



Java Performance News February 2017
We list all the latest Java performance related news and articles. "Getting a heap dump is straightforward, you can use any of jmap; the JMX com.sun.management.HotSpotDiagnostic.dumpHeap() method (from any JMX aware tool, such as jconsole); the -XX:+HeapDumpOnOutOfMemoryError flag (which does what it says); and jcmd [PID] GC.heap_dump [PATH_TO_DUMPFILE]"



February 2017 New Java Performance Tips
The latest Java performance tips from around the web, like "jvmstat includes several hundred indicators covering nearly all JVM areas: class loading, garbage collection, multithreading, just-in-time compilation, etc. jvmstat counters are free - Java HotSpot VM exports them anyway, whether you read them or not, in the file system as a memory-mapped file in a temporary directory, by default /tmp/hsperfdata_{user}/{pid}, where {pid} is the JVM process ID"



Java Performance News January 2017
We list all the latest Java performance related news and articles. "I'll be giving a talk at this years Devoxx UK on what I've learned about Java performance tuning over the 15 years of these newsletters"



January 2017 New Java Performance Tips
The latest Java performance tips from around the web, like "If you are considering timescales of 10 microseconds and lower, you need to architect for cores to run independently - so you need to understand the data in the shared CPU cache, and use thread affinity to keep specific operations on specific cores"



Java Performance News December 2016
We list all the latest Java performance related news and articles. "there's little for diagnosing concurrency issues in production beyond analysing multiple stack traces, data from the ThreadMXBean and jstack -l for java.util.concurrent.locks"



December 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "If you will be sending the same data component repeatedly, you can marshall that once and cache the marshalled form or a reference to it (ideally in a send buffer close to the wire) for improved scalability"



Java Performance News November 2016
We list all the latest Java performance related news and articles. "A good performance expert tends to be a good troubleshooter because many of the analysis skills are the same"



November 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "GC pauses with high 'sys' time compared to 'user' can occur from underlying OS IO happening, pausing the JVM. Similarly GC pauses with low 'user' and low 'sys' but high 'real' can be caused from JVM getting stuck waiting for OS IO to complete (including when GC file rotation triggers filesystem flushing)."



Java Performance News October 2016
We list all the latest Java performance related news and articles. "When 20 nanoseconds per request matter to you, you need to know about Thread.onSpinWait()."



October 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "Accept that the bottlenecks will shape your architecture, and consider them early on."



Java Performance News September 2016
We list all the latest Java performance related news and articles. "jcmd will now be able to alter some fine-grained JIT compiler directives at runtime and you can define them statically at startup; this may be particularly useful for those low latency applications with warmup concerns"



September 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "JEP 269, available in Java 9, adds factory methods for collections which return immutable collections, eg List.of(a, b, c, ...), Map.of(k1, v1, k2, v2, ...). Note that immutable collections are automatically threadsafe. They are also space efficient."



Java Performance News August 2016
We list all the latest Java performance related news and articles. "After that I realised that this is now the most dynamic, interesting, innovative time we've ever seen for Java! More than 20 years of ever improving Java and, instead of maturing and slowing down, we're actually accelerating improvements in Java all the way from the very bottom of the stack on through every stage!"



August 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "In order of increasing complexity for concurrency options: stateless; immutable; synchronized; locks; read-copy-update; java.util.concurrent.atomic; queueing"



Java Performance News July 2016
We list all the latest Java performance related news and articles. "both 'don't share' and 'don't mutate' techniques tend to increase copies of data, which incurs runtime and garbage collection costs that both impact latency. You gain lower maintenance costs, but it's very hard to maintain high throughput together with low latency with those two techniques. If you need low latency, you need 'coordinate access' and, more specifically, coordinate access using lock-free techniques."



July 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "SSD throughput is typically 2 orders of magnitude higher than HDD, but you can gain up to a further 4x speedup by making the application SSD friendly - eg using multiple concurrrent I/O threads (for small reads; large reads should keep the concurrent I/O thread count low). This differs markedly from HDDs where multiple concurrrent I/O threads tends to actually decrease throughput."



Java Performance News June 2016
We list all the latest Java performance related news and articles. "Target having two JVM instances, (three if you need more scale or redundancy), grow those instances up to the NUMA-node size but preferentially try to stay below either 4GB or 32GB max heaps; above NUMA-node RAM you need to test whether a bigger heap single JVM or per-NUMA-node memory restricted JVMs are more efficient"



June 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "The probability that a customer will see a worse than a nth centile request is 1-(n)^requests, eg the average page makes 42 requests to display the page, then 1-(0.95)^24 = 88% of pages see the 95th centile or worse in latency!"



Java Performance News May 2016
We list all the latest Java performance related news and articles. "An architect's primary approach is to see how the system will scale, handle failure modes staying resilient, and remain secure"



May 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "Why distribute your system? Scale and fault tolerance. But these are in conflict with each other - higher scale means more failure, more failure tolerance means more overhead which reduces scaling. Everything is a tradeoff between these"



Java Performance News April 2016
We list all the latest Java performance related news and articles. "If you're storing ints into a HashMap, they're being converted to and from Integers (either explicitly or through autoboxing). Changing the code to use the appropriate trove map (TObjectIntHashMap, TIntObjectHashMap or TIntIntHashMap) gives you a smaller, faster, and higher throughput implementation, at almost no effort"



April 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "You can auto-tune a system if you have a parameter which can be adjusted that you can control, a measure that the parameter affects, and a target for that measure (and assuming the parameter and measure react within reasonable times). Then using a controller with a feedback loop, the parameter can be auto-adjusted to minimize deviations from the target. This can allow your system to adapt to dynamically changing resource contention (eg request surges)"



Java Performance News March 2016
We list all the latest Java performance related news and articles. "In the performance world, we always go for the 'fail fast' implementation - as with any collection comparison, you compare subsets of the collection, and fail as soon as you know any subset does not equate. But in the security world, this can be dangerous"



March 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "If you need extremely low latencies, you have to take account of the mode and route of physical transmission of signals as well as the transport layer. Fibre transmits at 2/3 the speed of light, and most fibre routes tested were 1.5-2 times longer than the shortest physical path, so a typical good fibre route is already ~3x slower than maximum possible. DNS lookup and TCP handshakes imply further large overheads"



Java Performance News February 2016
We list all the latest Java performance related news and articles. "I list the pros and cons of microservices"



February 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "Concurrent access techniques in order of increasing throughput are: a lock; lock striping; splitting data structure to split writes; commit logging with asynchronous batched updates"



Java Performance News January 2016
We list all the latest Java performance related news and articles. "We've had software transactional memory in Java for 20 years in at least one system"



January 2016 New Java Performance Tips
The latest Java performance tips from around the web, like "In general you should size a JVM system based on heap allocation, not CPU allocation"



Java Performance News December 2015
We list all the latest Java performance related news and articles. "99.99% means you have less than an hour's total downtime over the whole year (8760 hours)"



December 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "Soft references are collected much less eagerly than weak ones, typically in response to memory pressure (weakly referenced objects could be collected at any time). This means a double hit happens when memory pressure increases, with the GC already trying hard to free up memory it also starts to look at softly referenced objects meaning even longer or more frequent GCs"



Java Performance News November 2015
We list all the latest Java performance related news and articles. "where to actually focus your effort: on enabling the architecture to scale horizontally and specifically handling the interactions between the components"



November 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "Choice of protocol for IoT depends on how and what pattern of communications the devices need to do - device processing capability, interoperability, message sizes, communication encryption, reliability of message delivery (atmost once, at least once, exactly once), and communication flow control (importantly whether you need to ensure there is a control channel open which means you can't allow congested channels) all need to factor in to the protocol decision"



Java Performance News October 2015
We list all the latest Java performance related news and articles. "the clear implication for JVMs: memory access is going to become the bottleneck in CPU processing"



October 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "Put limits on everything: bound queues; timeout remote calls; terminate idle connections; kill long (db) queries; etc." and "For stateful services in a service instance, cache data and have the client talk to the same instance (use sticky sessions)."



Java Performance News September 2015
We list all the latest Java performance related news and articles. "In Java 9, these combinations will cause a startup error instead of the deprecated message, aborting JVM startup"



September 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "The compare-and-swap (CAS) loop is a pattern used in many lock-free data structures. If another thread modifies the shared memory and changes it back before the first thread resumes execution (the ABA problem), a CAS can incorrectly succeed"



Java Performance News August 2015
We list all the latest Java performance related news and articles. "'-Xrun' is a generic command to the JVM to run a shared library agent given by the name of the subsequent characters, ie '-Xrunxyz' would run the shared library agent 'xyz'; on unix there will be a 'libxyz.so', on windows a 'xyz.dll'"



August 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "For more efficient debugging of asynchronous calls, either pass the stacks as you move from one context to the next, or more efficiently generate a UUID at the start and pass the UUID across all asynchronous contexts (and log that UUID) so that you can track a request across asynchronous processing using the UUID"



Java Performance News July 2015
We list all the latest Java performance related news and articles. "A tiny change in Java 8 is that Thread.stop(Throwable) is now disabled - it now throws an UnsupportedOperationException instead of working as it did in earlier Java versions. Thread.stop() still works (ie the stop() call with no argument)"



July 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "Make sure everything is getting JIT compiled. A quick technique to check this is to switch on the -XX:+PrintCompilation flag, then redo with -XX:ReservedCodeCacheSize doubled and if more methods are getting compiled the second time, the code cache was too small"



Java Performance News June 2015
We list all the latest Java performance related news and articles. "you can probably get the Oracle JVM down to about 5ms pauses if you are very careful with your code, but most code that uses third-party libraries will have a really hard time getting it down to 10ms"



June 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "-XX:+UseCondCardMark can make multi-threaded code faster"



Java Performance News May 2015
We list all the latest Java performance related news and articles. "In Java 8, Permgen disappeared, but Metaspace appeared. Metaspace has some of the same challenges - identifying classloader leaks will still be equally challenging. But instead of having a default maximum size as Permgen had, Metaspace is unlimited by default"



May 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "In Java 8 java.util.logging.Logger methods accept a Supplier (as an alternative to a String), which means that you can now pass a Supplier and the resulting code only gets evaluated when the log line is actually emitted - ie you get lazy evaluation and the log entry no longer needs to be guarded to avoid the string getting evaluated if the log level is insufficient to trigger the log line"



Java Performance News April 2015
We list all the latest Java performance related news and articles. "Optimal use of a shared resource is done by multiplexing where possible"



April 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "A microservice with correctly bounded context is self-contained - you can understand and update the microservice's code without knowing anything about the internals of its peers; the microservices and its peers interact strictly through APIs and so don't share data structures, database schemata, or other internal representations. This allows you to focus on fixing a single bottleneck without impacting anything else in the system"



Java Performance News March 2015
We list all the latest Java performance related news and articles. "if the majority of your requests need both microservice A and microservice B, and these two microservices both each need to scale to the same number of JVMs, there is no point at all in having those microservices running in separate JVMs - you may as well coalesce those microservices into the same JVM and gain the benefit of single JVM efficiency"



March 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "For thread-safety you just have to follow one simple rule - no mutable state in the code. No instance variables and you are safe, regardless of how many threads execute the same piece of code"



Java Performance News February 2015
We list all the latest Java performance related news and articles. "even if your program does almost no IO, that tiny IO operation it does gets queued up until the current flush completes, pausing your program"



February 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "Distributed caching requires cache updates to be propagated but this has overheads which in some situations can make the cache less effective than no cache"



Java Performance News January 2015
We list all the latest Java performance related news and articles. "volatile++ is not atomic, AtomicIntegerFieldUpdater.getAndIncrement(object) is"



January 2015 New Java Performance Tips
The latest Java performance tips from around the web, like "When there is a large difference in retained memory between a parent and child object, this is a good candidate for the holder of a memory leak" and "Objects can be collected earlier than you might expect - the finalize() method can run when calls to other object methods are concurrently running!"