<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Jaroslav Bachorik on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/jaroslav-bachorik/</link><description>Articles written by Jaroslav Bachorik on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 11 Oct 2021 08:05:33 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/jaroslav-bachorik/index.xml" rel="self" type="application/rss+xml"/><item><title>On The Costs of Hidden Logging</title><link>https://foojayio.github.io/website/today/the-costs-of-hidden-logging/</link><pubDate>Mon, 11 Oct 2021 08:05:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/the-costs-of-hidden-logging/</guid><description>&lt;p&gt;A while ago I received a customer escalation ticket regarding performance degradation when using &lt;a href="https://docs.datadoghq.com/tracing/profiler/" target="_blank" rel="noopener noreferrer"&gt;Datadog Continuous Profiler for Java&lt;/a&gt;
. The degradation was observable as an increased CPU usage as well as unexpected latency.&lt;/p&gt;
&lt;h2 id="h2-0-the-beginning-unusual-customer-escalation"&gt;The Beginning: Unusual Customer Escalation&lt;/h2&gt;
&lt;p&gt;To bootstrap the troubleshooting, I usually try to isolate the area which might be causing the regression.&lt;/p&gt;
&lt;p&gt;The profiler is packaged as a Java agent and for ease of use it is bundled together with the Datadog Java tracer agent. The profiler itself uses JDK Flight Recorder (JFR) under the hood.&lt;/p&gt;</description></item><item><title>Improved JFR Allocation Profiling in JDK 16</title><link>https://foojayio.github.io/website/today/improved-jfr-allocation-profiling-in-jdk-16/</link><pubDate>Wed, 17 Feb 2021 09:46:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/improved-jfr-allocation-profiling-in-jdk-16/</guid><description>&lt;p&gt;JFR (JDK Flight Recorder) has been providing the support for on-the fly allocation profiling for a while with the help of &lt;strong&gt;ObjectAllocationInNewTLAB&lt;/strong&gt; and &lt;strong&gt;ObjectAllocationOutsideTLAB&lt;/strong&gt; events.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Short excursion - what is TLAB?&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;TLAB stands for Thread Local Allocation Buffer and it is a region inside Eden, which is exclusively assigned to a thread. Each thread has its own TLAB. Thanks to that, as long as objects are allocated in TLABs, there is no need for any type of synchronization. Allocation inside TLAB is a simple pointer bump (that&amp;rsquo;s why it&amp;rsquo;s sometimes called pointer bump allocation).&lt;/p&gt;</description></item></channel></rss>