Skip to Main Content
IBM Z Software
Hide about this portal


This portal is to open public enhancement requests against IBM Z Software products. To view all of your ideas submitted to IBM, create and manage groups of Ideas, or create an idea explicitly set to be either visible by all (public) or visible only to you and IBM (private), use the IBM Unified Ideas Portal (https://ideas.ibm.com).


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Search existing ideas

Start by searching and reviewing ideas and requests to enhance a product or service. Take a look at ideas others have posted, and add a comment, vote, or subscribe to updates on them if they matter to you. If you can't find what you are looking for,

Post your ideas
  1. Post an idea.

  2. Get feedback from the IBM team and other customers to refine your idea.

  3. Follow the idea through the IBM Ideas process.


Specific links you will want to bookmark for future use

Welcome to the IBM Ideas Portal (https://www.ibm.com/ideas) - Use this site to find out additional information and details about the IBM Ideas process and statuses.

IBM Unified Ideas Portal (https://ideas.ibm.com) - Use this site to view all of your ideas, create new ideas for any IBM product, or search for ideas across all of IBM.

ideasibm@us.ibm.com - Use this email to suggest enhancements to the Ideas process or request help from IBM for submitting your Ideas.

shared classes to support .jrt and nested jars

See this idea on ideas.ibm.com

I am using zowe - and it takes a long time to start. (as well as z/osmf)


I can see from the shared classes output and the output of -verbose:classes that most files are not found in the shared classes cache. These classes come from nested jars... jars containing other jars.

The shared classes code should support these.

Idea priority High
  • Guest
    Reply
    |
    Mar 5, 2025

    There may be some other aspects to this.


    I can see from the trace that the entry is not in the SCC.
    When it tries to add it - it says "already exists in the cache"


    1708168:16:40:14.185881133 0x000000002167d200 j9shr.1322 Entry >CM

    findROMClass: for class org/springframework/boot/loader/launch/Launcher with classpath id 0

    1708184:16:40:14.185956632 0x000000002167d200 j9shr.127 Entry

    >RMI locateROMClass: Locate request for ROMClass org/springframework/boot/loader/launch/Launcher from helper ID 0 with cpeIndex -1

    1708185:16:40:14.185958742 0x000000002167d200 j9shr.953 Entry >M


    hllTableLookup: Entering lookup with name org/springframework/boot/loader/launch/Launcher

    1708227:16:40:14.186051663 0x000000002167d200 j9shr.1327 Exit <CM


    findROMClass: class org/springframework/boot/loader/launch/Launcher not found

    ...


    then it is found

    1709307:16:40:14.205634790 0x000000002167d200 j9shr.127 Entry >RMI

    locateROMClass: Locate request for ROMClass org/springframework/boot/loader/launch/Launcher from helper ID 2 with cpeIndex 0

    1709308:16:40:14.205636634 0x000000002167d200 j9shr.953 Entry >M

    hllTableLookup: Entering lookup with name org/springframework/boot/loader/launch/Launcher

    1709328:16:40:14.205688134 0x000000002167d200 j9shr.282 Entry >CMI touchForClassFiles:

    Looking for class org/springframework/boot/loader/launch/Launcher in classpath 0x2004d7efa54. Searching up to index 0.

    1709330:16:40:14.205691118 0x000000002167d200 j9shr.1293 Event


    RMI locateROMClass: Locate succeeded. Returning 0x2004d7efa20. FoundAtIndex=0. StaleCPEI=0x0.

    Locate request for ROMClass org/springframework/boot/loader/launch/Launcher from helper ID 2 with cpeIndex 0.


    1709332:16:40:14.205694696 0x000000002167d200 j9shr.1525 Event CM commitMetaDataROMClassIfRequired : found duplicate class org/springframework/boot/loader/launch/Launcher in cache

    1709333:16:40:14.205698962 0x000000002167d200 j9shr.1531 Event CM

    commitMetaDataROMClassIfRequired :1709332:16:40:14.205694696 0x000000002167d200 j9shr.1525 Event CM commitMetaDataROMClassIfRequired : found duplicate class org/springframework/boot/loader/launch/Launcher in cache

    1709333:16:40:14.205698962 0x000000002167d200 j9shr.1531 Event CM

    commitMetaDataROMClassIfRequired : located an existing class, no store is required for J9ROMClass org/springframework/boot/loader/launch/Launcher at address 0x496d9880.

    1709334:16:40:14.205702383 0x000000002167d200 j9shr.1532 Event CM commitMetaDataROMClassIfRequired : Nothing was stored in the cache for J9ROMClass org/springframework/boot/loader/launch/Launcher at address 0x496d9880

    1709538:16:40:14.230017273 0x000000002167d200 omrport.657 Event J9

    VM NLS message: Failed to store class org/springframework/boot/loader/launch/Launcher in shared cache for class-loader id 2

    with URL /u/tmp/zowep/components/gateway/bin/gateway-service-lite.jar (index 0).

    1709552:16:40:14.230254647 0x000000002167d200 j9shr.1496 Exit <API

    j9shr_jclUpdateROMClassMetaData : exit after storing nothing in the cache for class org/springframework/boot/loader/launch/Launcherfor J9ROMClass org/springframework/boot/loader/launch/Launcher at address 0x496d9880.

    1709334:16:40:14.205702383 0x000000002167d200 j9shr.1532 Event CM commitMetaDataROMClassIfRequired : Nothing was stored in the cache for J9ROMClass org/springframework/boot/loader/launch/Launcher at address 0x496d9880

    1709538:16:40:14.230017273 0x000000002167d200 omrport.657 Event J9

    VM NLS message: Failed to store class org/springframework/boot/loader/launch/Launcher in shared cache for class-loader id 2

    with URL /u/tmp/zowep/components/gateway/bin/gateway-service-lite.jar (index 0).

    1709552:16:40:14.230254647 0x000000002167d200 j9shr.1496 Exit <API

    j9shr_jclUpdateROMClassMetaData : exit after storing nothing in the cache for class org/springframework/boot/loader/launch/Launcher

  • Guest
    Reply
    |
    Mar 4, 2025

    I did some measurements on the use of shared classes. and shower proper support would save > 60 seconds of startup time.


    I took the classes which are not loaded into the shared classes cache, and loaded them myself, and stored them in the shared classes cache - and repeated it.


    First time ( classes not in the cache )


    "find" 8.89 seconds - 22021 requests

    "load" 60.1 seconds - 10053 requests

    "save in scc" 3.5 seconds 10053 requests


    Second time - exploiting classes in the cache

    find 11 seconds 22021 requests

    Load 0.01 seconds 10 requests

    save 0.01 seconds 10 request


    time dropped from 72 seconds down to 11 - a saving of over 60 second

    Currently one address space in Zowe starts in about 380 seconds... so this would reduce the startup time by 15%!


    This is on my zPDT system on Linux.