Saturday, June 9, 2012

Tracking excessive garbage collection in Hotspot JVM

Quite frequently due to memory leaks or other memory problems applications freeze leaving only the garbage collector (GC) process running  unsuccessfully trying to free some space. This happens until watchdog (or frustrated administrator) restarts the application and the problem is never solved.

The goal of this article is to show how to identify excessive GC and to get a heap dump whenever it occurs. It assumes Hotspot JVM version 1.6 or higher.

Saturday, December 3, 2011

Introduction to BTrace


What is BTrace?



BTrace dynamically (without restarting application) instruments (changes) bytecode of an application in the way that programmer defines. The goal of the instrumentation is to see what happens in a specific area of the code. If used beyond this scope it may harm applications' flow and therefore is forbidden by a validator.

For example let's try to solve following problem – an important file gets deleted occasionally once a day. We want to find the code that does this. Therefore we would like to change "delete" method of and print a stack trace of the calling thread if the file name fits. With BTrace we can do this by writing a short and straightforward Java code.

Monday, October 24, 2011

Just in Time Compiler (JIT) in Hotspot

What is JIT Compiler?


In order to explain what is JIT Compiler I want to start with a definition of compiler concept. According to wikipedia compiler is "a computer program that transforms the source language into another computer language (the target language)".

We are all familiar with static java compiler (javac) that compiles human readable .java files to a byte code that can be interpreted by JVM - .class files. Then what does JIT compile? The answer will given a moment later after explanation of what is "Just in Time".

Friday, December 17, 2010

Storing and delivering large files (binary data)

The regular way to store configuration is to persist it to database. In my case Hibernate is used for that purpose and the configuration is sent to client computers in XML format that is created by JAXB (Metro implementation) via HTTP.  In this post I describe what are the pros and cons of different ways to persist and to send large files.

Friday, December 10, 2010


Good day. My name is Artiom.

During my work as a Java developer I often encounter interesting problems that I want to share with colleagues and people, interested in Java or programming in general. This blog will contain both theoretical and practical issues.

 Any comments are always welcome.