Request for review: 8020530 Non heap memory size calculated incorrectly

Staffan Larsen staffan.larsen at oracle.com
Tue Aug 20 05:19:35 PDT 2013


Looks good. Metaspace is the first memory pool with an undefined maximum size.

/Staffan

On 20 aug 2013, at 13:44, Vladimir Kempik <vladimir.kempik at oracle.com> wrote:

> Hi all,
> 
> Could I have a couple of reviews for this change?
> 
> http://cr.openjdk.java.net/~vkempik/8020530/webrev.00/
> 
> Running WebLogic server with 1.8.0 encounters this error:
> 
> Caused by: java.lang.IllegalArgumentException: committed = 86482944 should be < max = 50331648
> 
>        at java.lang.management.MemoryUsage.<init>(MemoryUsage.java:162)
> 
>        at sun.management.MemoryImpl.getMemoryUsage0(Native Method)
> 
>        at sun.management.MemoryImpl.getNonHeapMemoryUsage(MemoryImpl.java:75)
> 
>       ... 37 more
> 
> There is a bug in jmm_GetMemoryUsage here -- if a memory region does not define a maximum size, then the total_max is not updated:
>      if (u.max_size() == (size_t)-1) {
>        has_undefined_max_size = true;
>      }
>      if (!has_undefined_max_size) {
>        total_max += u.max_size();
>      }
> 
> It started with JDK version 1.8.0-ea-b97.
> 
> In src/share/vm/services/management.cpp: jmm_GetMemoryUsage() there is next comment
> 
> // if any one of the memory pool has undefined init_size or max_size,
> // set it to -1
> 
> But code doing this is missing, so I've added the code to do exactly what comment says.
> 
> Thanks,
> Vladimir
> 



More information about the hotspot-runtime-dev mailing list