Java Memory Model – Specification Introduction

Multithreading is hard and if not coordinated and synchronized correctly it is way harder (talking about data races). This is my Infobip DevDays conference presentation where I tried to explain the Java Memory Model specification and how memory consistency is achieved.

JVM Architecture Introduction

If you do any Java programming (or any other JVM language) it is pretty mandatory to know how our code is loaded and executed. With this presentation, I’ll try to explain JVM architecture with its main components, the Class Loader, Runtime Data Area, and the Execution Engine.

General Races and Data Races

In a multithreaded program, races are rally bad. The reason for this is that a program is compiling correctly, tests are passing and it runs in production for months, and then, all of a sudden, the program returns a result that is everything but the expected one.

Cache Coherence

In order for a CPU to see all the different memories as a single fast and large memory component (see memory hierarchy) and to boost the performance by not going to the main memory to fetch the data, modern processors rely heavily on caching. Processors have multilevel caches after which, in case of a cache …

Cache Coherence Read More »