<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>M9K blog: заметки с тегом jcmd</title>
<link>https://blog.m9k.space/tags/jcmd/</link>
<description>Заметки обо всём: devops, lifestyle, культура.</description>
<author>M</author>
<language>ru</language>
<generator>E2 (v3877; Aegea)</generator>

<itunes:owner>
<itunes:name>M</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Заметки обо всём: devops, lifestyle, культура.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Принудительный Full GC Java-процессов по cron</title>
<guid isPermaLink="false">236</guid>
<link>https://blog.m9k.space/all/prinuditelny-full-gc-java-processov-po-cron/</link>
<pubDate>Thu, 17 Sep 2026 09:57:50 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/prinuditelny-full-gc-java-processov-po-cron/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;0 3 * * * for pid in $(pgrep -u spring -x java); do java_bin=$(readlink -f &amp;quot;/proc/$pid/exe&amp;quot;) &amp;amp;&amp;amp; jcmd=&amp;quot;$(dirname &amp;quot;$java_bin&amp;quot;)/jcmd&amp;quot; &amp;amp;&amp;amp; [ -x &amp;quot;$jcmd&amp;quot; ] &amp;amp;&amp;amp; &amp;quot;$jcmd&amp;quot; &amp;quot;$pid&amp;quot; GC.run; done &amp;gt;/dev/null 2&amp;gt;&amp;amp;1&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Суть:&lt;/p&gt;
&lt;p&gt;pgrep -u spring -x java находит все процессы с именем java, принадлежащие пользователю spring.&lt;/p&gt;
&lt;p&gt;Для каждого PID через /proc/$pid/exe определяется реальный исполняемый файл Java.&lt;/p&gt;
&lt;p&gt;Рядом с найденным java ищется соответствующий jcmd:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;jcmd=&amp;quot;$(dirname &amp;quot;$java_bin&amp;quot;)/jcmd&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Если jcmd существует и исполняемый, выполняется:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;jcmd PID GC.run&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Команда инициирует Full GC внутри соответствующей JVM.&lt;/p&gt;
&lt;p&gt;jcmd должен иметь возможность подключиться к JVM. Сron следует запускать от пользователя spring или от root. Если jcmd отсутствует рядом с используемым java, эта JVM будет молча пропущена.&lt;/p&gt;
</description>
</item>


</channel>
</rss>