how to know jvm is stopping the world?
Li Li
fancyerii at gmail.com
Tue Dec 13 03:40:40 UTC 2011
That's what I want.
btw, this feature is only available in sun jdk7?
does it exist in openjdk7?
On Mon, Dec 12, 2011 at 11:06 PM, Stefan Karlsson <
stefan.karlsson at oracle.com> wrote:
> On 12/11/2011 07:31 AM, Li Li wrote:
>
>> hi,
>> In our application of full text searching with lucene and solr. we
>> will give jvm about 25GB memory. we use CMS as old generation garbage
>> collector. But the jvm sometimes can't do anything. So our clients complain
>> that the connection is time out. we find the reason is the jvm is doing
>> full gc and it will stop service for about 1-3 seconds.
>> I know that this situation is inevitable when using CMS collector. but
>> we have more than one searching machines, so if I know jvm is doing full
>> gc(specially stop the world), I can send requests to other machines. But
>> the question now is that jvm don't provide an api for that. I think it's
>> not very difficult(for guys developing hotspot, but is in deed difficult
>> for me ). So I want your help.
>> The first question is where is the position of CMS full gc.
>> from http://blogs.oracle.com/**jonthecollector/entry/did_you_**know<http://blogs.oracle.com/jonthecollector/entry/did_you_know>
>> there are many steps:
>> 1. STW initial mark
>> 2. Concurrent marking
>> 3. Concurrent precleaning
>> 4. STW remark
>> 5. Concurrent sweeping
>> 6. Concurrent reset
>> there are 2 stop the world stages. I want to know the line number(or
>> functions) of this stages. so I can tell java program that jvm now is doing
>> full gc.
>> The second is that how to communicate between jvm and java program?
>> My expected thing is like :
>> //java program
>> if(System.isStopTheWolrd()){
>> //system is busy, tell the dispatch node that don't send
>> request to me
>> }else{
>> do service;
>> }
>> I have no experience in jvm developing. jvm is implemented in c and
>> jni is the interface between them. is there any other method that jvm can
>> achieve this? obviously, it can extend System class and add a static method
>> named isStopTheWorld(). Could some one tell me how to do this in details?
>> Thank you very much.
>>
>
> You could probably use JVMTI. See: http://docs.oracle.com/javase/**
> 7/docs/platform/jvmti/jvmti.**html#GarbageCollectionStart<http://docs.oracle.com/javase/7/docs/platform/jvmti/jvmti.html#GarbageCollectionStart>
>
> StefanK
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/hotspot-gc-dev/attachments/20111213/d1dee973/attachment.htm>
More information about the hotspot-gc-dev
mailing list