Review request: exports runtime support + jdk modules converted to use exports
Roger Riggs
Roger.Riggs at Oracle.com
Fri Jun 10 10:48:38 PDT 2011
Hi Mandy,
The size of the meta-data seems significant. What is the percentage
overhead
added by the configuration tables? Does the entire configuration occupy
the heap?
From a small system perspective; the total memory numbers seem out of
scale.
If it is just an optimization then it can wait. But if the current API
implies
a huge data structure is needed; then the design should be re-examined.
Roger
On 6/10/11 3:27 AM, Mandy Chung wrote:
> On 6/9/11 11:32 AM, Mandy Chung wrote:
>> On 6/9/11 5:48 AM, Alan Bateman wrote:
>>> I've been looking at the webrev and was wondering about this. I
>>> grabbed the patch file from the webrev and did some tests and it
>>> looks like the stored configuration for simple tests jumps very
>>> significantly, like from about 6.5MB to 90MB. The reason is that
>>> java -m spends several seconds loading it. Are you seeing this too?
>>
>> I can reproduce this. My test cases require jdk.base and thus I
>> didn't see this. The current default is "requires jdk" if no jdk
>> module is specified in the module-info that causes all jdk modules
>> (contexts and their local/remote maps) be included in the
>> configuration. I am looking into an optimization to this.
>>
> An update on the analysis:
>
> I instrumented the simple library. This single context's name itself
> takes up 80% of the config file size (~75M).
>
> +jdk.boot+sun.charsets+sun.compat+sun.corba+sun.desktop+sun.ext+sun.instrument+sun.jaas+sun.jaxp+sun.jdbc+sun.jndi+sun.jsse+sun.jta+sun.kerberos+sun.localedata+sun.logging+sun.management+sun.resources+sun.rmi+sun.security.acl+sun.sunec
>
>
> count per-string bytes total bytes
> 327099 235 76868265
>
> Each context contains a map from a remote class name to a context's name.
> When the map's key is changed from package name to a class name, the
> number of context's name is thus significantly increased. A simple
> fix would be using an integer as the context ID and storing the name
> only once.
>
> Top 15 strings with the highest total of bytes in the config file:
> count bytes total contexts name
> 327099 235 76868265 41
> +jdk.boot+sun.charsets+sun.compat+sun.corba+sun.desktop+sun.ext+sun.instrument+sun.jaas+sun.jaxp+sun.jdbc+sun.jndi+sun.jsse+sun.jta+sun.kerberos+sun.localedata+sun.logging+sun.management+sun.resources+sun.rmi+sun.security.acl+sun.sunec
> 5550 16 88800 1 sun.desktop at 7-ea
> 4121 10 41210 11 +jdk.javac
> 3722 10 37220 6 +sun.jaxws
> 3467 13 45071 1 jdk.boot at 7-ea
> 3325 14 46550 1 jdk.tools at 7-ea
> 2502 13 32526 1 sun.jaxp at 7-ea
> 2405 14 33670 1 sun.jaxws at 7-ea
> 1677 14 23478 1 sun.corba at 7-ea
> 1441 20 28820 1 jdk.tools.jaxws at 7-ea
> 801 13 10413 9 +jdk.compiler
> 768 14 10752 1 jdk.javac at 7-ea
> 558 19 10602 1 sun.management at 7-ea
>
> Total number of strings in the config file is 729694 but 26185
> unique strings. Total bytes occupied by these strings is 91839030.
>
> The strings created in the configuration includes
> context's name
> module's name at version
> module library path
> class name
>
> There is other opportunity for optimization. For example, for each class
> from jdk.boot, there are 40 copies in the config as one in each remote
> map
> of each context and there are 40 contexts requiring it.
>
> Mandy
>
More information about the jigsaw-dev
mailing list