<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<div style="direction: ltr; font-family: "Iosevka Fixed SS16", Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
John:</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);">
Actually, I am rather thankful for your feedback! I think we have the same goal - making the platform better for application developers and users alike, and you often have a different point of view which I consider to be quite valuable.</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);">
As for this particular experiment - I don't know whether it will get traction, since it would be nice to collect more data. I know you have a complicated app, so if you get a chance to try it, I would be very interested to see 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);">
Cheers,</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);">
</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 <john.hendrikx@gmail.com><br>
<b>Date: </b>Tuesday, February 24, 2026 at 15:18<br>
<b>To: </b>Andy Goryachev <andy.goryachev@oracle.com>, openjfx-dev@openjdk.org <openjfx-dev@openjdk.org><br>
<b>Subject: </b>Re: [External] : Re: Experiment: Node properties<br>
<br>
</div>
<div dir="ltr" lang="en" id="pfptBannerisu2bw0" 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;">
<div id="pfptBannerisu2bw0" 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="pfptBannerisu2bw0" 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="pfptBannerisu2bw0" 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="pfptBannerisu2bw0" 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="pfptPrimaryButtonisu2bw0" 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!NB26HKPE-kJvFVPgl9P0eC1aEgTncirt4a5AdrE1aLWxbTMDzI63iPm7kB6ihcotcHwstn3iI8KMxNqjQ7fsR3rpYaUYgJD94jW7HA$" id="pfptBannerisu2bw0" data-outlook-id="855acdfb-aced-4bae-bc4d-0a9b5b972cfa" style="text-decoration: none; display: inline-block; background-color: rgb(96, 190, 235); max-width: none; max-height: none;">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">Hi Andy,</p>
<p class="ms-outlook-mobile-reference-message skipProofing">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. </p>
<p class="ms-outlook-mobile-reference-message skipProofing">Anyway, thanks for hearing me out, perhaps it was useful.</p>
<p class="ms-outlook-mobile-reference-message skipProofing">--John</p>
<div class="moz-cite-prefix">On 24/02/2026 18:03, 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);">
All good points. The reason I asked the community for the feedback is to get more data with real applications. </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);">
Would you like to try it with <i>your </i>application? Would you share the results?</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);">
-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 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>John Hendrikx <a href="mailto:john.hendrikx@gmail.com" class="moz-txt-link-rfc2396E" data-outlook-id="44313a7d-a02f-4db7-a0b0-9d55d78e87d3">
<john.hendrikx@gmail.com></a><br>
<b>Date: </b>Monday, February 23, 2026 at 23:05<br>
<b>To: </b>Andy Goryachev <a href="mailto:andy.goryachev@oracle.com" class="moz-txt-link-rfc2396E" data-outlook-id="03343db3-d6d2-4172-bf1d-33fca59ca0c4">
<andy.goryachev@oracle.com></a>, <a href="mailto:openjfx-dev@openjdk.org" class="moz-txt-link-abbreviated" data-outlook-id="3ede5663-8ef9-4c91-8803-03ccc226f5af">
openjfx-dev@openjdk.org</a> <a href="mailto:openjfx-dev@openjdk.org" class="moz-txt-link-rfc2396E" data-outlook-id="5494324a-10c6-4755-adc9-fe50cb8ad203">
<openjfx-dev@openjdk.org></a><br>
<b>Subject: </b>[External] : Re: Experiment: Node properties<br>
<br>
</div>
<div dir="ltr" id="pfptBannerp7mohbo" lang="en" 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">
<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;">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">
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;">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">
<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">
<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">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">
<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;">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">
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>
</div>
</body>
</html>