Search

GC easy – Universal Java GC Log Analyser

Tag

heap dump

Troubleshooting Microservice’s OutOfMemoryError: Metaspace

Recently we confronted an interesting ‘java.lang.OutOfMemoryError: Metaspace’ problem in a Microservice application. This Microservice application will run smoothly for initial few hours, later it will start to throw java.lang.OutOfMemoryError: Metaspace. In this post let me share the steps we pursued to troubleshoot this problem.

Continue reading “Troubleshooting Microservice’s OutOfMemoryError: Metaspace”

Java Hashtable, HashMap, ConcurrentHashMap – Performance impact

There are a good number of articles that articulate functional differences between HashMap, HashTable and ConcurrentHashMap. This post compares the performance behavior of these data structures through practical examples. If you don’t have patience to read the entire post, here is bottom line: When you confront with the decision of whether to use HashMap or HashTable or ConcurrentHashMap, you can consider using ConcurrentHashMap since it’s thread-safe implementation, without compromise in performance.

Continue reading “Java Hashtable, HashMap, ConcurrentHashMap – Performance impact”

Benefits of setting initial and maximum memory size to the same value

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”

Let’s crash the applications! – Confoo 2022

ConFoo Montreal is a multi-technology conference for developers. This year , they have conducted the program to exchange knowledge and ideas from speakers all over the world. Our Architect Ram Lakshmanan was invited to give a talk on the topic: “Let’s crash the applications!”

Continue reading “Let’s crash the applications! – Confoo 2022”

16 artifacts to capture when there is a production problem -Montreal 2022

ConFoo Montreal is a multi-technology conference for developers. Our Architect Ram Lakshmanan has been invited there to present on the topic “16 artifacts to capture when there is a production problem“, which has secured 5th place among 155 sessions.

Continue reading “16 artifacts to capture when there is a production problem -Montreal 2022”

Is today’s microservice more bloated than yesterday’s monolith?

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?”

OutOfMemoryError: Kill process or sacrifice child – causes & solutions

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”

What is Java Heap Fragmentation?

Java Heap fragmentation is an interesting problem, which triggers long pausing full garbage collection cycles. In this article we would like to attempt to explain the heap fragmentation. 

Let’s say developer write a code ‘new BMW()’. This will create a new BMW object in the heap memory space. Example:

Continue reading “What is Java Heap Fragmentation?”

LARGE OR SMALL MEMORY SIZE FOR MY APP?

Should I be running my application with few instances (i.e. machines) with large memory size or a lot of instances with small memory size? Which strategy is optimal? This question might be confronted often. After building applications for 2 decades, after building JVM performance engineering/troubleshooting tools (GCeasy, FastThread, HeapHero), I still don’t know the right answer to this question. At the same time, I believe there is no binary answer to this question as well. In this article, I would like to share my observations and experiences on this topic.

Continue reading “LARGE OR SMALL MEMORY SIZE FOR MY APP?”

Powered by WordPress.com.

Up ↑