Blog

Garbage Collection, Part 2 – Mark and Sweep Algorithms

“Under the Hood” blog series – getting a deeper technical insight like the mobile solutions, JVM, computer languages, scripts, databases and other interesting tools and technologies. Each blog in this series is a result from our experiences, customer projects and gained knowledge through the web community.

The heap space is separated into the young and old generation memory pools. Each pool has its own generational garbage collector. Due to the fact that objects in the young generation keep alive for a very short period and objects in the old generation live longer different collection algorithms are required.

Lesen Sie mehr

Garbage Collection, Part 1 – Different object life cycles requires different garbage collection

“Under the Hood” blog series – getting a deeper technical insight like the mobile solutions, JVM, computer languages, scripts, databases and other interesting tools and technologies. Each blog in this series is a result from our experiences, customer projects and gained knowledge through the web community.

Java’s memory model in the runtime data area is separated into three different parts: the heap, method area and native area. It is managed by several garbage collectors. In this blog I will explain about objects with different life cycles, its effects during creation until termination (garbage collection), and the necessity of having different ergonomics and garbage collections.

Lesen Sie mehr

JVM Memory Arguments

“Cookbook” blog series – a collection of best practices for solving problems. Each blog in this series is a result from our experiences, customer projects and gained knowledge through the web community.

Problem

You want to optimize your Java memory. For example an OutOfMemoryError can occur in several parts of Java’s Runtime Data Area: in the young or old generation of the heap space, permanent generation or code cache of the non-heap area.

Lesen Sie mehr

Runtime Data Areas – Java’s Memory Model

“Under the Hood” blog series – getting a deeper technical insight like the mobile solutions, JVM, computer languages, scripts, databases and other interesting tools and technologies. Each blog in this series is a result from our experiences, customer projects and gained knowledge through the web community.

Every developer gets once confronted by Java memory questions like: What size should I define for the Heap space? An OutOfMemoryError covers which part of the runtime data area? In the Heap, PermGen, or Thread? And how do I solve it?

Lesen Sie mehr

Howto – local and remote snapshot backup using rsync with hard links

Introduction

Your Linux servers are running smoothly? Fine.
Now if something incidentally gets wrong you need also to prepare an emergency plan.
And even when everything is going fine, a backup that is directly stored on the same server can still be useful:

  • for example when you need to see what was changed on a specific file,
  • or if you want to find the list of files that were installed or modified after the installation of an application

This article is then intended to show you how you can set up an open-source solution, using the magic of the famous ‘rsync’ tool and some shell-scripting, to deploy a backup system without the need of investing into expensive proprietary software.
Another advantage of a shell-script is that you can easily adapt it according to your specific needs, for example for you DRP architecture.

The proposed shell-script is derivate from the great work of Mikes Handy’s rotating-filesystem-snapshot utility (cf. http://www.mikerubel.org/computers/rsync_snapshots).
It creates backups of your full filesystem (snapshots) with the combined advantages of full and incremental backups:

  • It uses as little disk space as an incremental backup because all unchanged files are hard linked with existing files from previous backups; only the modified files require new inodes.
  • Because of the transparency of hard links, all backups are directly available and always online for read access with your usual programs; there is no need to extract the files from a full archive and also no complicate replay of incremental archives is necessary.

Lesen Sie mehr