When we launch applications, we specify the initial memory size and maximum memory size. For the applications that run on JVM (Java Virtual Machine), initial and maximum memory size is specified through ‘-Xms’ and ‘-Xmx’ arguments. If Java applications are running on containers, it’s specified through ‘-XX: InitialRAMPercentage’ and ‘-XX: MaxRAMPercentage’ arguments. Most enterprises set the initial memory size to a lower value than the maximum memory size. As opposed to this commonly accepted practice, setting the initial memory size the same as the maximum memory size has certain ‘cool’ advantages. Let’s discuss them in this post.Continue reading “Benefits of setting initial and maximum memory size to the same value”
I am slightly hesitant to write this post, as it might attract some criticism. Nevertheless, I told myself there is nothing wrong with sharing my point of view (even though it might not be well accepted). I would like to share my personal experience regarding yesterday’s Monolithic and today’s Microservice architecture in this post.Continue reading “Is today’s microservice more bloated than yesterday’s monolith?”
Naveen Kumar Namachivayam from QAInsights Invited Ram Lakshmanan – The architect of yCrash to talk in the Performance Engineers Clubhouse. In this video, the basics of Garbage collection, Importance of Memory, GC Throughput Introduction and many other topics have been discussed!
There are different flavors of OutOfMemoryError. One of the flavours of OutOfMemoryError is ‘Kill Process or sacrifice child’. This post discusses what triggers this ‘Kill Process or sacrifice child’ OutOfMemoryError and potential solutions to diagnose this problem.Continue reading “OutOfMemoryError: Kill process or sacrifice child – causes & solutions”
You can pass 600+ arguments to JVM just around Garbage collection and memory. It’s way too many arguments for anyone to digest and comprehend. In all these 4 videos, 7 important JVM arguments that will boost your Java/Scala/Jython application performances are shared.Continue reading “Video Blog: 7 JVM Arguments of Highly effective applications”
What happens behind the scene when a java program is executed? In which regions objects are created? When objects become eligible for garbage collection? Where are threads stored? What is the difference between Stack and Heap? Watch this video to know more.Continue reading “How Java program executed? – Heap, threads, stack, GC”
In the series of chaos engineering articles, we have been learning to simulate various performance problems. In this post, let’s discuss how to simulate ‘java.lang.OutOfMemoryError: Java Heap space’ problem. This ‘java.lang.OutOfMemoryError: Java Heap space’ will be thrown by the application when the application generates more objects than the allocated heap size.Continue reading “Chaos Engineering – Simulating OutOfMemoryError”
Java applications tend to contain hundreds (sometimes thousands) of threads. The majority of these threads are in WAITING, TIMED_WAITING (i.e., dormant) state, while only a small portion of the threads are actively executing lines of code. So, we were curious to know whether dormant threads consume less memory than active threads.
To figure out an answer to this question, we conducted a small study. Our findings were interesting, thus sharing with you.Continue reading “Java threads – may not be memory effecient?”
Java Virtual Machine (JVM) generates 3 critical artifacts that are useful for optimizing the performance and troubleshooting production problems. Those artifacts are:Continue reading “What is GC Log, thread dump and Heapdump?”
At the time (March 2020) of writing this article there are 600+ arguments that you can pass to JVM just around Garbage collection and memory. If you include other aspects, total JVM arguments count will easily cross 1000+. 😊. It’s way too many arguments for anyone to digest and comprehend. In this article, we are highlighting seven important JVM arguments that you may find it useful.Continue reading “7 JVM arguments of Highly Effective Applications”