Stupid question
Greg Bowyer
gbowyer at fastmail.co.uk
Tue May 22 14:27:11 PDT 2012
Done, I get this
The "Leaky program" bit is stupid simple test program that slowly leaks
memory, mostly to test the jvm simply
Printf's for commint memory and anon_mmap added
I notice that we get this one -> anon_mmap addr=0x5bae00000
bytes=9749659648 fixed=0
greg at localhost
~/projects/openjdk/jdk7/build/linux-amd64-fastdebug/j2sdk-image $
./bin/java -Xms512m -Xmx9g -XX:+LockHeapInMemory test
VM option '+LockHeapInMemory'
commit_memory addr=0x7f2d66c49000 bytes=12288
anon_mmap addr=(nil) bytes=50331648 fixed=0
commit_memory addr=0x7f2d60bb5000 bytes=2555904
anon_mmap addr=(nil) bytes=786432 fixed=0
commit_memory addr=0x7f2d66b89000 bytes=40960
anon_mmap addr=0x5bae00000 bytes=9749659648 fixed=0
anon_mmap addr=(nil) bytes=19046400 fixed=0
commit_memory addr=0x7f2d60bb4000 bytes=4096
commit_memory addr=0x740000000 bytes=178913280
commit_memory addr=0x7f2d605b4000 bytes=352256
commit_memory addr=0x5c0000000 bytes=357957632
anon_mmap addr=(nil) bytes=12582912 fixed=0
commit_memory addr=0x7f2d5f9b4000 bytes=700416
commit_memory addr=0x7f2d5ed8b000 bytes=700416
commit_memory addr=0x5bae00000 bytes=21757952
anon_mmap addr=(nil) bytes=167936 fixed=0
commit_memory addr=0x7f2d5f98b000 bytes=45056
commit_memory addr=0x7f2d5ed62000 bytes=45056
commit_memory addr=0x7f2d5d7e5000 bytes=12288
commit_memory addr=0x7f2d5d6e4000 bytes=12288
commit_memory addr=0x7f2d5d3f5000 bytes=12288
commit_memory addr=0x7f2d5d2f4000 bytes=12288
commit_memory addr=0x7f2d5d1f3000 bytes=12288
commit_memory addr=0x7f2d5d0f2000 bytes=12288
Leaking program is slowly leaking 1
Leaking program is slowly leaking 2
Leaking program is slowly leaking 3
....
^Ccommit_memory addr=0x7f2d5cef0000 bytes=12288
On 22/05/12 13:35, Vitaly Davidovich wrote:
>
> can you add a print statement to commit_memory() to see what arguments
> are being passed to it? I'm sure someone on this mailing list will
> have a better suggestion, but that's what I'd try just to establish
> that some code is indeed trying to expand the heap to its max allotted
> size.
>
> Sent from my phone
>
> On May 22, 2012 4:08 PM, "Greg Bowyer" <gbowyer at fastmail.co.uk
> <mailto:gbowyer at fastmail.co.uk>> wrote:
>
> Yes thats basically it
>
> java -Xms512m -Xmx9g test
>
> On 22/05/12 12:27, Vitaly Davidovich wrote:
>>
>> Hi Greg,
>>
>> As an aside, in os::commit_memory, I think the tertiary condition
>> that sets the flags is inverted - you want MAP_LOCKED if
>> LockHeapInMemory is set, I believe.
>>
>> As to your question, what args are being passed to the above
>> function in your run? I take it -Xms is less than Xmx in your trial?
>>
>> Sent from my phone
>>
>> On May 22, 2012 3:07 PM, "Greg Bowyer" <gbowyer at fastmail.co.uk
>> <mailto:gbowyer at fastmail.co.uk>> wrote:
>>
>> Not sure if this is the right venue for this, or if I am insane
>>
>> I have been playing with the openjdk code with a view to lock
>> the heap in memory (or at least suggest to the OS that it
>> wants to be locked in memory).
>>
>> My use case is for java processes that are greedy in memory
>> and typically have a virtual size larger than physical ram.
>> This is not where an end user allocates a java heap beyond
>> ram but rather things like Lucene / Cassandra, where
>> typically the JVM heap is large but limited to say 1/4 of the
>> total physical ram and the rest of the process virtual size
>> is taken up with mmap()'d files.
>>
>> There are java projects that currently do this with a call
>> out via JNA / JNI to mlockall()
>>
>> Asking the OS to use the MAP_LOCKED flag in the mmap calls in
>> os_linux.cpp effectively does an mlock / mlockall which I
>> think means that when the OS chooses pages to page out; then
>> it should (for some measure of should) avoid paging out the
>> JVM heap.
>>
>> This means that horrors between CMS and paging do not cause
>> hateful pauses (hopefully)
>>
>> The thing I cant understand is that when I start a new VM
>> with this code (attached) it appears to lock the full size of
>> the heap (-Xmx) (even though the given memory is not used by
>> the VM), this seems to make the entire space resident.
>>
>> any ideas ?
>>
>> _______________________________________________
>> hotspot-gc-use mailing list
>> hotspot-gc-use at openjdk.java.net
>> <mailto:hotspot-gc-use at openjdk.java.net>
>> http://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20120522/5b2798ae/attachment.html
More information about the hotspot-gc-use
mailing list