<!DOCTYPE html><html><head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body>
    <p><font face="monospace">Hi </font><font face="monospace">Stephane</font><font face="monospace">,</font></p>
    <p><font face="monospace">I think your tool is quite useful and I
        like the format (cut-and-pasted below) that it reports the
        statistics. It can be used to diagnose configuration problems so
        that the application can use CDS effectively.<br>
      </font></p>
    <p><font face="monospace">I also use the -Xlog:class+load output a
        lot, but I usually just use ad-hoc scripts.<br>
      </font></p>
    <p><font face="monospace">For Leyden, I think we should think about
        improved logging and diagnostics for other artifacts as well
        (heap objects, AOT methods, etc). Some sort of central place
        (like JFR) for accessing such information would be useful. Do
        you have suggestions for how to integrate with JFR?</font></p>
    <p><font face="monospace">Thanks</font></p>
    <p><font face="monospace">- Ioi<br>
      </font></p>
    <pre class="notranslate" style="box-sizing: border-box; font-size: 13.6px; margin-top: 0px; margin-bottom: 0px; overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; color: rgb(31, 35, 40); background-color: rgb(246, 248, 250); border-radius: 6px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"><code style="box-sizing: border-box; font-size: 13.6px; padding: 0px; margin: 0px; white-space: pre; background: transparent; border-radius: 6px; word-break: normal; border: 0px none; display: inline; overflow: visible; line-height: inherit; overflow-wrap: normal;">--------------------------------------------------------------------------
Class Loading Report:
     15909 classes and JDK proxies loaded
     13140 (82,59%) from cache
      2769 (17,41%) from classpath

Categories:
   Lambdas  1736 (10,91%): 11,23% from cache
   Proxies   175 ( 1,10%): 56,57% from cache
   Classes 14000 (88,00%): 91,76% from cache

Top 10 locations from classpath:
       759 BOOT-INF/lib/byte-buddy-1.14.9.jar
       347 __JVM_LookupDefineClass__
        75 __dynamic_proxy__
        69 org.springframework.boot.autoconfigure.web.embedded.TomcatWebServerFactoryCustomizer
        39
        31 org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryCustomizer
        19 org.springframework.data.mapping.model.Property
        16 org.springframework.core.io.support.SpringFactoriesLoader
        16 org.springframework.data.mapping.model.AnnotationBasedPersistentProperty
        16 org.springframework.boot.autoconfigure.web.WebProperties

Top 10 packages:
      5078 org.springframework (77,37% from cache)
      3776 org.hibernate (92,77% from cache)
       847 java.lang (60,45% from cache)
       810 net.bytebuddy (4,94% from cache)
       737 java.util (98,78% from cache)
       575 org.h2 (98,09% from cache)
       523 com.fasterxml (95,98% from cache)
       323 org.aspectj (100,00% from cache)
       322 jdk.internal (99,07% from cache)
       310 org.apache (97,74% from cache)
--------------------------------------------------------------------------</code></pre>
    <p><font face="monospace"><br>
      </font></p>
    <div class="moz-cite-prefix"><font face="monospace">On 1/23/24
        00:39, Stephane Nicoll wrote:<br>
      </font></div>
    <blockquote type="cite" cite="mid:CANqHJzCTNkZEPcn-equSeubYz_eMn+fVZk6jZzWWoMm3RcwCAg@mail.gmail.com">
      
      <div dir="ltr">
        <div><font face="monospace">Hey,</font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace">I hope this mailing list is the
            right place for this. I am working with Sébastien Deleuze on
            the Spring team and we've been focusing quite a bit on CDS
            lately and how it can be easily leveraged by our user base. <br>
          </font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace">One thing we quickly found out was
            that the cache can be more or less effective depending on
            the way you start the app (classloaders, non deterministic
            list of jar files, etc). Initially, we were testing the
            startup time and comparing when CDS wasn't enabled.<br>
          </font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace">I think there must be a better way
            and, for the lack of finding one, I've developed a (very)
            pragmatic approach of parsing the JVM logs and producing a
            report[1]. The tool has improved a bit for our own use case,
            creating the cache and providing a report of the warnings
            that were issued (to spot packages that couldn't be managed
            and why).</font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace">Parsing the logs is good enough for
            our little testing there but we were wondering if there was
            an appetite (or need) to productize this. We were thinking
            that JFR events could be an option.</font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace">Thanks,</font></div>
        <div><font face="monospace">S.<br>
          </font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace"><br>
          </font></div>
        <div><font face="monospace">[1] <a href="https://github.com/snicoll/cds-log-parser" moz-do-not-send="true" class="moz-txt-link-freetext">https://github.com/snicoll/cds-log-parser</a></font></div>
      </div>
      <font face="monospace"><br>
      </font>
      <font face="monospace"><span style="background-color:rgb(255,255,255)"><font size="2">This
            electronic communication and the information and any files
            transmitted with it, or attached to it, are confidential and
            are intended solely for the use of the individual or entity
            to whom it is addressed and may contain information that is
            confidential, legally privileged, protected by privacy laws,
            or otherwise restricted from disclosure to anyone else. If
            you are not the intended recipient or the person responsible
            for delivering the e-mail to the intended recipient, you are
            hereby notified that any use, copying, distributing,
            dissemination, forwarding, printing, or copying of this
            e-mail is strictly prohibited. If you received this e-mail
            in error, please return the e-mail to the sender, delete it
            from your computer, and destroy any printed copy of it.</font></span></font>
    </blockquote>
  </body>
</html>