OutOfMemoryError is a runtime error in Java that occurs when the Java Virtual Machine (JVM) is unable to allocate an object due to insufficient space in the Java heap. The Java Garbage Collector (GC) cannot free up the space required for a new object, which causes the error.Continue reading “Flavors of OutOfMemoryErrors”
When the application’s memory is under-allocated, it will result in the following side-effects:
a. Transactions response time will degrade
b. CPU consumption will spike up
c. OutOfMemoryError will be thrown
Only when OutOfMemoryError is thrown, most of us start to look at our application’s memory settings. This is like only when a patient goes to a critical condition; we begin to give treatment :-).
In this post, let’s discuss how to detect whether your application’s memory is under-allocated or not in a proactive manner.Continue reading “Detect proactively whether application’s memory is under-allocated”
As the author of GCeasy – Garbage collection log analysis tool, I get to see few interesting Garbage Collection Patterns again & again. Based on the Garbage collection pattern, you can detect the health and performance characteristics of the application instantly. In this post, let me share few interesting Garbage collection patterns that have intrigued me.Continue reading “Interesting Garbage Collection Patterns”
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?”
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”
I have heard a few of my developer friends say: “Garbage Collection is automatic. So, I do not have to worry about it.“ The first part is true, i.e., “Garbage Collection is automatic” on all modern platforms – Java, .NET, Golang, Python… But the second part i.e., “I don’t have to worry about it.” – may not be true. It is arguable, questionable. Here is my case to showcase the importance of Garbage Collection:Continue reading ““I don’t have to worry about Garbage collection” – Is it true?”
We truly believe enterprises are wasting millions of dollars in garbage collection. We equally believe enterprises are wasting these many millions of dollars even without knowing they are wasting. Intent of this post is to bring visibility on how several millions of dollars are wasted due to garbage collection.Continue reading “How many millions of dollars enterprises waste due to Garbage collection?”
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 efficient?”
When you are running your Java application in physical servers, you would have been using ‘-Xmx’ JVM argument to specify the Java heap size. If you are porting your application to Containers, you might be wondering how to configure Java heap size in the container’s world? Are there any best practices? In this article, we will discuss the possible JVM arguments that can be used to specify the Java heap size and the best option to choose.Continue reading “Best practices: Java memory arguments for Containers”