CRITICAL SYSTEMS REVIEW (CSR)

The post offers assistance to improve application performance by addressing traffic volume, scaling, availability, response time, and security concerns. The author provides an in-depth analysis of architecture and system components, culminating in a report detailing issues and tailored solutions, including architectural and code-level modifications.

How Does String Deduplication Work in Java?

This article discusses improving application performance by optimizing String memory usage in Java. It explains String allocation methods, the benefits of String.intern(), and introduces String deduplication during garbage collection. The analysis highlights trade-offs between space and time efficiency, urging careful consideration before implementing optimizations based on specific application needs and metrics.

Actions on OutOfMemoryErrors

OutOfMemoryErrors in applications occur when memory allocation fails. This article discusses effective practices for analyzing such errors, including automatic heap dumps and using JVM parameters. It highlights script usage for automatic actions upon encountering errors and emphasizes the importance of proactive monitoring and automated incident reporting to reduce application downtime.

Virtual Threads – A Definite Advantage

Virtual Threads in Java, introduced in version 21, significantly enhance multi-threaded applications by reducing thread management overhead. This article explores their advantages over traditional platform threads through experimentation involving one million threads. Virtual Threads operate efficiently within heap memory, preventing OutOfMemoryError, and allow easier application scalability and performance improvements.

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

The author reflects on their journey from monolithic to microservice architecture, highlighting a large financial institution's transition from a CORBA/C++ platform to SOAP/Java. They express concerns about modern microservices consuming significantly more memory and facing degraded response times compared to older monolithic systems, while acknowledging the benefits of microservices.

OutOfMemoryError: Kill process or sacrifice child – causes & solutions

The 'Kill Process or sacrifice child' OutOfMemoryError occurs when memory usage exceeds available RAM, prompting the OS to terminate certain processes. A simulation using an AWS EC2 instance demonstrated this error, where a Java application and a chaotic BuggyApp exceeded memory limits. Potential solutions include increasing RAM, reducing processes, and optimizing memory use.

Chaos Engineering – Stackoverflow Error

This article discusses how to simulate and diagnose StackOverflow errors in Java. It introduces a sample program that triggers a StackOverflowError due to infinite recursion in the start() method of the StackOverflowDemo class. Both manual and automated approaches for diagnosing the error are outlined, highlighting the effectiveness of the yCrash tool for root cause analysis.

Shallow Heap vs Retained Heap

Eclipse MAT is a crucial tool for analyzing heap dumps, particularly useful in debugging OutOfMemoryError. It distinguishes between two object sizes: Shallow Heap and Retained Heap. A video is available that explains their differences and calculation methods. Watch it for more insights on using Eclipse MAT effectively.

Large or small heap size?

The video discusses strategies for running applications with either large or small heap sizes. It explores the implications of each approach in terms of performance and cost. Viewers can learn which heap size strategy might be optimal for their specific application needs.

Up ↑