<!DOCTYPE html>
<!-- BaNnErBlUrFlE-BoDy-start -->
<!-- Preheader Text : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">
Hi Andy, I'm currently not having a lot of spare time to do active FX (application) development, so unfortunately I probably won't get around to playing with this any time soon (I usually do most of my FX work when unemployed or when I'm on</div>
<!-- Preheader Text : END -->

<!-- Email Banner : BEGIN -->
<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerStart</div>

<!--[if ((ie)|(mso))]>
  <table border="0" cellspacing="0" cellpadding="0" width="100%" style="padding: 0px 0px 10px 0px; direction: ltr" lang="en"><tr><td>
    <table border="0" cellspacing="0" cellpadding="0" style="padding: 0px 8px 6px 8px; width: 100%; border-radius:4px; border-top:4px solid #8193a0;background-color:#60beeb;"><tr><td valign="top">
      <table align="left" border="0" cellspacing="0" cellpadding="0" style="padding: 0px 8px 4px 8px; font-size: 12px; line-height: 16px">
        <tr><td style="color:#000000; font-family: 'Arial', sans-serif; font-weight:bold; font-size:14px; line-height: 20px; direction: ltr">
          This Message Is From an External Sender
        </td></tr>
        <tr><td style="color:#000000; font-weight:normal; font-family: 'Arial', sans-serif; font-size:12px; direction: ltr">
          This message came from outside your organization.
        </td></tr>

      </table>
      <![if ie]><br clear="all"><![endif]>
      <table align="right" border="0" cellspacing="0" cellpadding="0" style="padding: 0px 0px 4px 0px; font-size: 14px; line-height: 36px"><tr>
        <td style="direction: ltr">  <a target="_blank" href="https://us-phishalarm-ewt.proofpoint.com/EWT/v1/ACWV5N9M2RV99hQ!NB26HKPE-kJvFVPgl9P0eC1aEgTncirt4a5AdrE1aLWxbTMDzI63iPm7kB6ihcotcHzXeCRUxgp2GKuYueeFuyeSfygnZO1GjE4Tg80$" style="mso-padding-alt: 7px; padding: 7px; border-radius: 2px; border: 1px solid #666666; "><strong style="font-weight: normal; color: #000000; text-decoration: none; font-family: 'Arial', sans-serif; font-size: 14px;">  Report Suspicious  </strong></a>  ‌ </td>
      </tr></table>
    </td></tr></table>
  </td></tr></table>
<![endif]-->

<![if !((ie)|(mso))]>
  <div dir="ltr" lang="en" id="pfptBannerl9xt6hc" style="all: revert !important; display:block !important; text-align: left !important; margin: 0 0 10px 0 !important; padding:7px 16px 8px 16px !important; border-radius: 4px !important; min-width: 200px !important; background-color: #60beeb !important; background-color: #60beeb; border-top: 4px solid #8193a0 !important; border-top: 4px solid #8193a0;">
    <div id="pfptBannerl9xt6hc" style="all: unset !important; float:left !important; display:block !important; margin: 1px 0 1px 0 !important; max-width: 600px !important;">
      <div id="pfptBannerl9xt6hc" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #60beeb !important; color:#000000 !important; color:#000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-weight:bold !important; font-weight:bold; font-size:14px !important; line-height:1.29 !important; line-height:1.29">
        This Message Is From an External Sender
      </div>
      <div id="pfptBannerl9xt6hc" style="all: unset !important; display:block !important; visibility: visible !important; background-color: #60beeb !important; color:#000000 !important; color:#000000; font-weight:normal; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size:12px !important; line-height:1.5 !important; line-height:1.5; margin-top:2px !important;">
This message came from outside your organization.
      </div>

    </div>
    <div id="pfptBannerl9xt6hc" style="all: unset !important; float: right !important; display: block !important; display: block; margin-left: 16px !important; margin-top: 1px !important; text-align: right !important; width: fit-content !important; font-size: 12px !important">
<a id="pfptBannerl9xt6hc" href="https://us-phishalarm-ewt.proofpoint.com/EWT/v1/ACWV5N9M2RV99hQ!NB26HKPE-kJvFVPgl9P0eC1aEgTncirt4a5AdrE1aLWxbTMDzI63iPm7kB6ihcotcHzXeCRUxgp2GKuYueeFuyeSfygnZO1GjE4Tg80$"
    style="all: unset !important; display: inline-block !important; text-decoration: none">
    <div class="pfptPrimaryButtonl9xt6hc" style="display: inline-block !important; display: inline-block; visibility: visible !important; opacity: 1 !important; color: #000000 !important; color: #000000; font-family: 'Arial', sans-serif !important; font-family: 'Arial', sans-serif; font-size: 14px !important;  font-weight: normal !important; text-decoration: none !important; border-radius: 2px !important; margin-top: 3px !important; margin-bottom: 3px !important; margin-left: 16px !important; padding: 7.5px 16px !important; white-space: nowrap !important; width: fit-content !important;
        border: 1px solid #666666">
        Report Suspicious
    </div>
</a>
    </div>
    <div style="clear: both !important; display: block !important; visibility: hidden !important; line-height: 0 !important; font-size: 0.01px !important; height: 0px"> </div>
  </div>
<![endif]>

<div style="display:none !important;display:none;visibility:hidden;mso-hide:all;font-size:1px;color:#ffffff;line-height:1px;max-height:0px;opacity:0;overflow:hidden;">ZjQcmQRYFpfptBannerEnd</div>
<!-- Email Banner : END -->

<!-- BaNnErBlUrFlE-BoDy-end -->
<html>
  <head><!-- BaNnErBlUrFlE-HeAdEr-start -->
<style>
  #pfptBannerl9xt6hc { all: revert !important; display: block !important;
    visibility: visible !important; opacity: 1 !important;
    background-color: #60beeb !important;
    max-width: none !important; max-height: none !important }
  .pfptPrimaryButtonl9xt6hc:hover, .pfptPrimaryButtonl9xt6hc:focus {
    background-color: #77a8c4 !important; }
  .pfptPrimaryButtonl9xt6hc:active {
    background-color: #8193a0 !important; }
  html:root, html:root>body { all: revert !important; display: block !important;
    visibility: visible !important; opacity: 1 !important; }
</style>

<!-- BaNnErBlUrFlE-HeAdEr-end -->

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi Andy,</p>
    <p>I'm currently not having a lot of spare time to do active FX
      (application) development, so unfortunately I probably won't get
      around to playing with this any time soon (I usually do most of my
      FX work when unemployed or when I'm on holidays :)). However, I'll
      follow the results with interest.  The topic of fast data
      structures and more efficient use of cpu/memory is always
      fascinating. <br>
    </p>
    <p>Anyway, thanks for hearing me out, perhaps it was useful.</p>
    <p>--John</p>
    <div class="moz-cite-prefix">On 24/02/2026 18:03, Andy Goryachev
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CY8PR10MB726510CBC08007310C3C2FB6E574A@CY8PR10MB7265.namprd10.prod.outlook.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        All good points.  The reason I asked the community for the
        feedback is to get more data with real applications.  </div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        Would you like to try it with <i>your </i>application?  Would
        you share the results?</div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        Thanks</div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        -andy </div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
        <br>
      </div>
      <div id="mail-editor-reference-message-container">
        <div class="ms-outlook-mobile-reference-message skipProofing"
          style="direction: ltr;">
        </div>
        <div class="ms-outlook-mobile-reference-message skipProofing"
style="text-align: left; padding: 3pt 0in 0in; border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) currentcolor currentcolor; font-family: Aptos; font-size: 12pt; color: black;">
          <b>From: </b>John Hendrikx <a class="moz-txt-link-rfc2396E" href="mailto:john.hendrikx@gmail.com"><john.hendrikx@gmail.com></a><br>
          <b>Date: </b>Monday, February 23, 2026 at 23:05<br>
          <b>To: </b>Andy Goryachev <a class="moz-txt-link-rfc2396E" href="mailto:andy.goryachev@oracle.com"><andy.goryachev@oracle.com></a>,
          <a class="moz-txt-link-abbreviated" href="mailto:openjfx-dev@openjdk.org">openjfx-dev@openjdk.org</a> <a class="moz-txt-link-rfc2396E" href="mailto:openjfx-dev@openjdk.org"><openjfx-dev@openjdk.org></a><br>
          <b>Subject: </b>[External] : Re: Experiment: Node properties<br>
          <br>
        </div>
        <div dir="ltr" id="pfptBannerp7mohbo"
style="visibility: visible !important; opacity: 1 !important; max-width: none !important; max-height: none !important; display: block !important; text-align: left !important; margin: 0px 0px 10px !important; padding: 7px 16px 8px !important; border-radius: 4px !important; min-width: 200px !important; background-color: rgb(96, 190, 235); border-top-width: 4px !important; border-top-style: solid !important; border-top-color: rgb(129, 147, 160) !important;"
          lang="en">
          <div id="pfptBannerp7mohbo"
style="visibility: visible !important; opacity: 1 !important; background-color: rgb(96, 190, 235); max-height: none !important; float: left !important; display: block !important; margin: 1px 0px !important; max-width: 600px !important;">
            <div id="pfptBannerp7mohbo"
style="opacity: 1 !important; max-width: none !important; max-height: none !important; display: block !important; visibility: visible !important; background-color: rgb(96, 190, 235); color: rgb(0, 0, 0); font-family: Arial, sans-serif !important; font-weight: bold !important; font-size: 14px !important; line-height: 1.29 !important;">
              This Message Is From an External Sender</div>
            <div id="pfptBannerp7mohbo"
style="font-weight: normal; opacity: 1 !important; max-width: none !important; max-height: none !important; display: block !important; visibility: visible !important; background-color: rgb(96, 190, 235); color: rgb(0, 0, 0); font-family: Arial, sans-serif !important; font-size: 12px !important; line-height: 1.5 !important; margin-top: 2px !important;">
              This message came from outside your organization.</div>
          </div>
          <div id="pfptBannerp7mohbo"
style="visibility: visible !important; opacity: 1 !important; background-color: rgb(96, 190, 235); max-width: none !important; max-height: none !important; float: right !important; display: block !important; margin-left: 16px !important; margin-top: 1px !important; text-align: right !important; width: fit-content !important; font-size: 12px !important;">
            <div class="pfptPrimaryButtonp7mohbo"
style="white-space: nowrap; margin-top: 3px; margin-bottom: 3px; margin-left: 16px; padding: 7.5px 16px; border-width: 1px; border-style: solid; border-color: rgb(102, 102, 102); border-radius: 2px; width: fit-content; display: inline-block; font-family: Arial, sans-serif; font-size: 14px; color: rgb(0, 0, 0);">
              <span style="background-color: rgb(96, 190, 235);"><a
href="https://us-phishalarm-ewt.proofpoint.com/EWT/v1/ACWV5N9M2RV99hQ!NB2w9kOkmgLOPxPqHXmUmLdxC9ZtwG8cWgWC3QrerJBijvilB58UVSfh4k_zegB5C4cYQuZsUgja4MdmMuDGNKl1z77lAqJtu1aEvg$"
                  id="pfptBannerp7mohbo"
                  data-outlook-id="222e8053-beec-4ad8-a245-a1f233001953"
style="text-decoration: none; display: inline-block; background-color: rgb(96, 190, 235); max-width: none; max-height: none;"
                  moz-do-not-send="true">Report Suspicious</a></span></div>
          </div>
          <div
style="line-height: 0; height: 0px; display: block; font-size: 0.01px;"> </div>
        </div>
        <p class="ms-outlook-mobile-reference-message skipProofing">Thanks
          for the taking the time to respond.</p>
        <div class="moz-cite-prefix">On 24/02/2026 00:32, Andy Goryachev
          wrote:</div>
        <blockquote>
          <p class="ms-outlook-mobile-reference-message skipProofing"
            style="direction: ltr; margin-top: 0px; margin-bottom: 0px;">
            <span
style="font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">>
              What trade off are you making here?  It seems we're
              trading a small memory gain for more CPU use (extra
              indirection, walking a list linearly to find the correct
              property on each use/access VS no indirection, no list
              walking).</span></p>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            You are right.  The tradeoff is non-zero memory gain (a few
            megabytes, to the tune of maybe 5% of total heap size) at
            the cost of extra CPU cycles.  The rationale is that even
            though we consume extra CPU, it's much less noticeable
            because of the cache-friendly implementation and non-zero
            positive impact on garbage collector (less memory to scan).</div>
        </blockquote>
        <p class="ms-outlook-mobile-reference-message skipProofing">What
          is more cache friendly about adding several extra indirections
          to get to a property's value?  Let me see:</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">Before:</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">-
          isFocusTraversable(): get property -> get value</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">After:</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">-
          isFocusTraversable(): get fast map -> get key ArrayList
          -> get internal array -> get value ArrayList -> get
          internal array -> get property -> get value</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">For
          the garbage collector, the properties are likely going to be
          in an area of the GC collector that will be scanned rarely,
          and not part of the frequent scans for young objects. I don't
          think we can generally conclude that having less memory used
          will have an overall positive impact on the GC here.  The
          properties will be seen as long-lived by the GC, and will
          reside in an area only scanned rarely, which has very little
          impact on the performance of most GC implementations.  </p>
        <blockquote>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <p class="ms-outlook-mobile-reference-message skipProofing"
            style="direction: ltr; margin-top: 0px; margin-bottom: 0px;">
            <span
style="font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">>
              Are the resource constrained platforms you named generally
              memory or CPU constrained?</span></p>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            I asked Gluon for some feedback on iOS/Android.  However, my
            previous experience with a large trading application says
            that memory footprint savings outweighs the CPU cycles, so I
            would imagine we'll get a net gain even on the desktop.</div>
        </blockquote>
        <p class="ms-outlook-mobile-reference-message skipProofing">That's
          anecdotal, and will depend on the type of application,
          platform, CPU cores available, etc.  So while you may be
          correct for your trading application, it may be completely the
          opposite for a task tracking application. In general, memory
          use is hardly a factor for most applications; most Java apps
          don't even bother to limit the heap, yet complain about
          several GB's of memory use when they have a retained size of
          less than half a GB.  Not that I'm not in favor of reducing
          memory footprint, but I seriously wonder if there is much to
          gain at the property level.</p>
        <p class="ms-outlook-mobile-reference-message skipProofing"><br>
        </p>
        <blockquote>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <p class="ms-outlook-mobile-reference-message skipProofing"
            style="direction: ltr; margin-top: 0px; margin-bottom: 0px;">
            <span
style="font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">>
              Have you investigated a breakdown of JavaFX memory use,
              and did the amount of memory used by properties come out
              on top here?</span></p>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            There is some statistics provided in <a
href="https://urldefense.com/v3/__https://github.com/andy-goryachev-oracle/Test/blob/main/doc/Experiments/NodeProperties.md__;!!ACWV5N9M2RV99hQ!MzSYmvZYuuGt1DeacdS8b3HxocmwPlbLyCsxYspFUtMNu6eQUQ64a2MmPb3qqChHl3CoNGgI7G63dlDvqa-KA2UQW14B$"
              class="moz-txt-link-freetext"
              data-outlook-id="9074576b-7c43-438e-a9d5-ea05048e66cd"
              moz-do-not-send="true">
https://github.com/andy-goryachev-oracle/Test/blob/main/doc/Experiments/NodeProperties.md</a> ,
            please take a look.</div>
        </blockquote>
        <div class="ms-outlook-mobile-reference-message skipProofing">I
          took a look, but could only find statistics about properties.
          I didn't see a breakdown of general JavaFX memory use (the
          other 95%) to see if properties are the lowest hanging fruit.</div>
        <blockquote>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <p class="ms-outlook-mobile-reference-message skipProofing"
            style="direction: ltr; margin-top: 0px; margin-bottom: 0px;">
            <span
style="font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">>
              Would the gains you made here become irrelevant or less
              relevant with Compact Object Headers [<a
                href="https://openjdk.org/jeps/519"
                class="moz-txt-link-freetext"
                data-outlook-id="6cb8835d-b6f1-4268-bdc5-acb387ef1fbb"
                style="margin-top: 0px; margin-bottom: 0px;"
                moz-do-not-send="true">https://openjdk.org/jeps/519</a>]</span></p>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            Compact Object Headers are almost irrelevant here - the
            stats that were collected count the number of pointers saved
            (assumed 8 bytes per pointer on 64 bit).  The stats ignore
            any other possible savings.</div>
        </blockquote>
        <p class="ms-outlook-mobile-reference-message skipProofing">Compact
          Object Headers is especially relevant here as you're
          optimizing small objects (properties) on which JEP519 offers
          the most relative gain.  Enabling it may reduce the 5% memory
          gain you measured to a smaller margin, which impacts the
          rationale for this change.</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">Furthermore,
          if we're talking about saving memory, I think we can assume
          we're using small heaps (less than 32 GB).  In that case,
          Hotspot will use 4 bytes per pointer (compressed OOPs) not 8,
          so your assumption of 8 bytes per pointer will be incorrect in
          the vast majority of JavaFX cases.</p>
        <blockquote>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <p class="ms-outlook-mobile-reference-message skipProofing"
            style="direction: ltr; margin-top: 0px; margin-bottom: 0px;">
            <span
style="font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">>
              I think the property look-up system cannot reasonably be
              List (FastMap despite its name is a List). Converting this
              to a map however is likely to require a small object (like
              Map.Entry) which will further reduce any gains you made
              here I think.</span></p>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            The FastMap is a map-like (key-value) storage, even though
            it's implemented as an array.  There is a debate as to what
            would the most efficient implementation entail (a hashmap,
            one array, or two arrays like the POC currently uses).  The
            idea is not to put
            <b>all</b>​ the properties into the container, but only the
            rarely used ones, with the end result of having a few (less
            than 4-6, say).  This makes the object small and
            cache-friendly, which further speeds up the access.</div>
        </blockquote>
        <p class="ms-outlook-mobile-reference-message skipProofing">I'm
          aware of the intentions to only put the rarely used properties
          there.  What is rarely used will depend on the application. 
          How many properties will end up being stored there also
          depends on the application.  What if the app does need several
          of these properties and this structure grows to contain 20-30
          properties?</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">Currently
          your proposal wants to store these rarely used properties in
          an O(n) structure, whereas a hash based solutions are O(1),
          and where doing nothing is even faster as there is no map at
          all.</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">So
          although your map implementation may be small and cache
          friendly (that last point being debatable, see indirection
          count), it degrades badly when there are more than the
          predicted amount of properties, and requires many more
          indirections than the base case of doing nothing.</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">There
          is talk about not having to do an expensive `hashCode` call in
          your proposal.  First, `hashCode` is really cheap for objects
          not implementing equality as it falls back on the
          Object#hashCode.  I believe this is the case for properties. 
          Even if it isn't the case, you could use the identity hash
          code here (the `==` equivalent in the hashing world).</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">However
          that "expensive" call is what enables the O(1) lookup of the
          value you are interested in, which can be truly cache friendly
          with the right structure (array based open addressed map).</p>
        <p class="ms-outlook-mobile-reference-message skipProofing">--John</p>
        <blockquote>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            Thanks!</div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            -andy</div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
            <br>
          </div>
          <div id="mail-editor-reference-message-container">
            <div
              class="ms-outlook-mobile-reference-message skipProofing"
style="text-align: left; padding: 3pt 0in 0in; border-width: 1pt medium medium; border-style: solid none none; border-color: rgb(181, 196, 223) currentcolor currentcolor; font-family: Aptos; font-size: 12pt; color: black;">
              <b>From: </b>openjfx-dev <a
                href="mailto:openjfx-dev-retn@openjdk.org"
                class="moz-txt-link-rfc2396E"
                data-outlook-id="c4ceda82-4a4d-4013-8602-07c56454c4e2"
                moz-do-not-send="true">
                <openjfx-dev-retn@openjdk.org></a> on behalf of
              John Hendrikx <a href="mailto:john.hendrikx@gmail.com"
                class="moz-txt-link-rfc2396E"
                data-outlook-id="6a581e80-a6c6-4c6c-a7ad-a77eb79bce65"
                moz-do-not-send="true">
                <john.hendrikx@gmail.com></a><br>
              <b>Date: </b>Thursday, February 19, 2026 at 15:28<br>
              <b>To: </b><a href="mailto:openjfx-dev@openjdk.org"
                class="moz-txt-link-abbreviated moz-txt-link-freetext"
                data-outlook-id="db1b9f81-80b3-407b-a571-6db4fc419e52"
                moz-do-not-send="true">openjfx-dev@openjdk.org</a>
              <a href="mailto:openjfx-dev@openjdk.org"
                class="moz-txt-link-rfc2396E"
                data-outlook-id="65818e93-6c49-4557-8050-7bcf378047bf"
                moz-do-not-send="true">
                <openjfx-dev@openjdk.org></a><br>
              <b>Subject: </b>Re: Experiment: Node properties<br>
              <br>
            </div>
            <p class="ms-outlook-mobile-reference-message skipProofing"><br>
            </p>
            <div class="moz-cite-prefix">On 04/02/2026 22:17, Andy
              Goryachev wrote:</div>
            <blockquote>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                I would like to share the results of a little experiment
                involving optimization of storage of Node properties.
                 The basic idea is to create a compact fast map-like
                container to hold the rarely instantiated properties in
                order to reduce the application memory footprint.</div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <br>
              </div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                The savings are not overwhelming, but not exactly zero.
                 I would imagine this optimization might be more
                interesting in any resource constrained environment such
                as Android / iOS / RaspberryPi.  Please refer to [0] for
                the details.</div>
            </blockquote>
            <p class="ms-outlook-mobile-reference-message skipProofing">What
              trade off are you making here?  It seems we're trading a
              small memory gain for more CPU use (extra indirection,
              walking a list linearly to find the correct property on
              each use/access VS no indirection, no list walking).</p>
            <p class="ms-outlook-mobile-reference-message skipProofing">Are
              the resource constrained platforms you named generally
              memory or CPU constrained?</p>
            <p class="ms-outlook-mobile-reference-message skipProofing">Have
              you investigated a breakdown of JavaFX memory use, and did
              the amount of memory used by properties come out on top
              here?</p>
            <p class="ms-outlook-mobile-reference-message skipProofing">Would
              the gains you made here become irrelevant or less relevant
              with Compact Object Headers [<a
                href="https://openjdk.org/jeps/519"
                class="moz-txt-link-freetext"
                data-outlook-id="6cb8835d-b6f1-4268-bdc5-acb387ef1fbb"
                style="margin-top: 0px; margin-bottom: 0px;"
                moz-do-not-send="true">https://openjdk.org/jeps/519</a>]</p>
            <p class="ms-outlook-mobile-reference-message skipProofing"><br>
            </p>
            <blockquote>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <br>
              </div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                I encourage you to try it with your application, to see
                whether you notice any change in memory consumption
                and/or performance.  Let me know what you think!</div>
            </blockquote>
            <p class="ms-outlook-mobile-reference-message skipProofing">I
              like the idea, but I wonder if there really is much to
              gain here, and whether those gains will hold up with
              future Java improvements.</p>
            <p class="ms-outlook-mobile-reference-message skipProofing">I
              think the property look-up system cannot reasonably be
              List (FastMap despite its name is a List). Converting this
              to a map however is likely to require a small object (like
              Map.Entry) which will further reduce any gains you made
              here I think.</p>
            <p class="ms-outlook-mobile-reference-message skipProofing">--John</p>
            <blockquote>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <br>
              </div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                Cheers,</div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                -andy</div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <br>
              </div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <br>
              </div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <b>References</b></div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                <br>
              </div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
                [0] <a
href="https://urldefense.com/v3/__https://github.com/andy-goryachev-oracle/Test/blob/main/doc/Experiments/NodeProperties.md__;!!ACWV5N9M2RV99hQ!MzSYmvZYuuGt1DeacdS8b3HxocmwPlbLyCsxYspFUtMNu6eQUQ64a2MmPb3qqChHl3CoNGgI7G63dlDvqa-KA2UQW14B$"
                  class="moz-txt-link-freetext"
                  data-outlook-id="217ca979-74ae-4107-9a0b-bf3cf23cb5ec"
                  moz-do-not-send="true">
https://github.com/andy-goryachev-oracle/Test/blob/main/doc/Experiments/NodeProperties.md</a></div>
              <div
                class="ms-outlook-mobile-reference-message skipProofing"
style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt;">
                <br>
              </div>
            </blockquote>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </body>
</html>