<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Marcus Hirt on foojay.io - Friends of OpenJDK</title><link>https://foojayio.github.io/website/today/author/hirt/</link><description>Articles written by Marcus Hirt on foojay.io - Friends of OpenJDK</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 22 May 2023 10:23:52 +0000</lastBuildDate><atom:link href="https://foojayio.github.io/website/today/author/hirt/index.xml" rel="self" type="application/rss+xml"/><item><title>Foojay Podcast #23: Java Profiling and Performance</title><link>https://foojayio.github.io/website/today/foojay-podcast-23/</link><pubDate>Mon, 22 May 2023 10:23:52 +0000</pubDate><guid>https://foojayio.github.io/website/today/foojay-podcast-23/</guid><description>&lt;p&gt;How do you get the maximum performance out of your Java application?&lt;/p&gt;
&lt;p&gt;And how to use profiling to find the bottlenecks?&lt;/p&gt;
&lt;p&gt;Let&amp;rsquo;s learn all about it in this podcast, with Heinz Kabutz, Marcus Lagergren, Chris Newland, and Frank Delporte!&lt;/p&gt;
&lt;p&gt;Java profiling is a crucial technique for measuring and improving the performance of applications.&lt;/p&gt;
&lt;p&gt;It helps identify bottlenecks, memory leaks, and other application performance issues.&lt;/p&gt;
&lt;p&gt;There are various challenges with using Java profiling, and the need for profiling depends on the complexity of the application and the performance requirements.&lt;/p&gt;</description></item><item><title>Contributing to OpenJDK Mission Control</title><link>https://foojayio.github.io/website/today/contributing-to-openjdk-mission-control/</link><pubDate>Mon, 18 Oct 2021 08:33:12 +0000</pubDate><guid>https://foojayio.github.io/website/today/contributing-to-openjdk-mission-control/</guid><description>&lt;p&gt;Since this month is &lt;a href="https://hacktoberfest.digitalocean.com/" target="_blank" rel="noopener noreferrer"&gt;Hacktoberfest&lt;/a&gt;
, I thought it would be a good idea to talk a bit about how to contribute to the OpenJDK Mission Control project.&lt;/p&gt;
&lt;p&gt;Some of the content of this article will be applicable to any of the OpenJDK projects, especially the Skara (OpenJDK on Git) bits.&lt;/p&gt;
&lt;h2 id="h2-0-the-openjdk-mission-control-project"&gt;The OpenJDK Mission Control Project&lt;/h2&gt;
&lt;p&gt;The OpenJDK Mission Control project is the observability tools suite for OpenJDK. It contains a JMX Console, a JFR visualizer and analyzer, a heap waste analysis tool, and many other little useful tools and utilities. Since it is all open source, pretty much anyone can contribute to the project.&lt;/p&gt;</description></item><item><title>JDK Mission Control 8.1.0 Released!</title><link>https://foojayio.github.io/website/today/jdk-mission-control-8-1-0-released/</link><pubDate>Mon, 09 Aug 2021 18:02:33 +0000</pubDate><guid>https://foojayio.github.io/website/today/jdk-mission-control-8-1-0-released/</guid><description>&lt;p&gt;Yay, the latest release of JDK Mission Control was just released!&lt;/p&gt;
&lt;p&gt;Since this is the source release, it may still take a bit of time until the downstream vendors release binary builds of JDK Mission Control 8.1.0.&lt;/p&gt;
&lt;p&gt;I will try to remember to &lt;a href="https://twitter.com/hirt" target="_blank" rel="noopener noreferrer"&gt;tweet&lt;/a&gt;
 or say something on the &lt;a href="https://www.facebook.com/javamissionctrl" target="_blank" rel="noopener noreferrer"&gt;JMC Facebook page&lt;/a&gt;
 once the binaries start showing up.&lt;/p&gt;
&lt;h2 id="h2-0-mission-control-8-1-new-and-noteworthy"&gt;Mission Control 8.1 &amp;ndash; New and Noteworthy&lt;/h2&gt;
&lt;hr&gt;
&lt;h3 id="h3-1-general"&gt;General&lt;/h3&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;JMC 8.1 &amp;ndash; New Release!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Announcement: JMC 8.0.1 Has Been Released!</title><link>https://foojayio.github.io/website/today/jmc-8-0-1-released/</link><pubDate>Fri, 25 Jun 2021 18:10:26 +0000</pubDate><guid>https://foojayio.github.io/website/today/jmc-8-0-1-released/</guid><description>&lt;p&gt;The &lt;a href="https://github.com/openjdk/jmc/releases/tag/8.0.1-ga" title="8.0.1-ga" target="_blank" rel="noopener noreferrer"&gt;8.0.1-ga&lt;/a&gt;
 tag was just set in the jmc8 repository on GitHub. This is a patch update release, and will therefore not include any new features.&lt;/p&gt;
&lt;p&gt;The 8.0.1 release contains the following fixes:&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Jira Issue&lt;/th&gt;
					&lt;th&gt;Summary&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;7188&lt;/td&gt;
					&lt;td&gt;JMC fails to dump file and gets stuck when flightrecording is attempted on jmxremote connection&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;7172&lt;/td&gt;
					&lt;td&gt;Fix spell mistake in secure store class&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6920&lt;/td&gt;
					&lt;td&gt;UI improvements&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6336&lt;/td&gt;
					&lt;td&gt;Remove Triple DES Cipher in Secure store&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6398&lt;/td&gt;
					&lt;td&gt;Better JNDI Usage&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;It is up to individual vendors to release binaries of JMC 8.0.1, and some vendors already have binary builds available, for example &lt;a href="https://jdk.java.net/jmc/8/" title="Oracle" target="_blank" rel="noopener noreferrer"&gt;Oracle&lt;/a&gt;
.&lt;/p&gt;</description></item><item><title>OpenJDK and the Future of Production Profiling</title><link>https://foojayio.github.io/website/today/openjdk-and-the-future-of-production-profiling/</link><pubDate>Thu, 24 Jun 2021 08:46:28 +0000</pubDate><guid>https://foojayio.github.io/website/today/openjdk-and-the-future-of-production-profiling/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Some thoughts on the future of continuous production profiling on the OpenJDK platform.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A long time ago, the JRockit Runtime Analyzer (JRA) was introduced into the JRockit JVM as a means of being able to figure out what was going on in the JVM. It was mainly there to find out how customers were using the JVM, so that the JVM could be optimized for actual real-world production work-loads. The JRA output the data as XML, since customers insisted on the data being human readable so that they could see exactly what they would be sending us. Later LAT (LATency Analyzer) was introduced, since after the introduction of the JRockit low latency garbage collector (a.k.a the DetGC), some customers complained about the GC not keeping its latency promises. More often than not, it turned out it was other kinds of thread stalls causing the latencies, so LAT was introduced so that the JRockit team could figure out where the problematic code was. Since there could be a considerable amount of data in LAT, a binary format was introduced for the events recorded.&lt;/p&gt;</description></item><item><title>Continuous Production Profiling and Diagnostics</title><link>https://foojayio.github.io/website/today/continuous-production-profiling-and-diagnostics/</link><pubDate>Mon, 09 Nov 2020 15:57:38 +0000</pubDate><guid>https://foojayio.github.io/website/today/continuous-production-profiling-and-diagnostics/</guid><description>&lt;p&gt;I&amp;rsquo;ve gotten a lot of questions about continuous production profiling lately. Why would anyone want to profile in production, or, if production profiling seems reasonable, why the heck leave it on continuously? I thought I&amp;rsquo;d take a few moments and share my take on the problem and the success I&amp;rsquo;ve seen the past years applying continuous production profiling in systems in the real world.&lt;/p&gt;
&lt;p&gt;Trigger warning: this blog will not contain code samples.&lt;/p&gt;</description></item><item><title>A Closer Look at Java Flight Recorder Streaming</title><link>https://foojayio.github.io/website/today/a-closer-look-at-jfr-streaming/</link><pubDate>Mon, 17 Aug 2020 11:04:00 +0000</pubDate><guid>https://foojayio.github.io/website/today/a-closer-look-at-jfr-streaming/</guid><description>&lt;p&gt;&lt;em&gt;By&lt;/em&gt; &lt;a href="https://twitter.com/hirt" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;Marcus Hirt&lt;/em&gt;&lt;/a&gt;
&lt;em&gt;and&lt;/em&gt; &lt;a href="https://twitter.com/jpbempel" target="_blank" rel="noopener noreferrer"&gt;&lt;em&gt;JP Bempel&lt;/em&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;Since JDK 14, there is a new Java Flight Recorder (JFR) kid on the block &amp;ndash; JFR streaming. 🙂 This blog post, written together with JP Bempel, will discuss some of the things that you can do with JFR streaming, as well as some of the things you may want to avoid.&lt;/p&gt;
&lt;h2 id="h2-0-an-introduction-to-jfr-streaming"&gt;An Introduction to JFR Streaming&lt;/h2&gt;
&lt;p&gt;In the most recent version of the JDK, a new JFR-related feature was introduced &amp;ndash; JFR streaming. It is a feature allowing a developer to subscribe to select JFR data and to decide what to do with that data in the host process. JFR events can also be consumed from a separate process by pointing to the file repo of a separate JVM process &amp;ndash; the mechanism is the same.&lt;/p&gt;</description></item><item><title>Overview of JVM Vendors and Choosing the Right One</title><link>https://foojayio.github.io/website/today/fantastic-jvms-and-where-to-find-them/</link><pubDate>Wed, 22 Jul 2020 13:07:29 +0000</pubDate><guid>https://foojayio.github.io/website/today/fantastic-jvms-and-where-to-find-them/</guid><description>&lt;p&gt;Since you&amp;rsquo;re reading this blog, chances are that you&amp;rsquo;re writing software which will eventually run on a JVM. Most of you are using the Java language. Many of you are using a variety of other languages that target the JVM, such as Scala, Kotlin, Clojure, Groovy, (J)Ruby etc. Eventually you&amp;rsquo;ll need to decide on which JDK/JRE to deploy your software on in production. This is much easier said than done. There are quite a few different vendors out there, providing support and taking responsibility for the binaries they produce. They can have different support lengths for specific versions, and whereas you can sometimes find a vendor providing extended support for a version that has been officially end-of-lifed at Oracle, you may not find builds with the latest fixes in them publicly available. You&amp;rsquo;ll need to get those directly from the vendor.&lt;/p&gt;</description></item></channel></rss>