[POSSIBLY SPAM: SPF] hotspot-gc-use Digest, Vol 143, Issue 1

Thorsten tg at freigmbh.de
Tue Jun 29 12:57:32 UTC 2021


Hello,

Basicly System.gc will no longer be able compact your memory or free up 
as much as possible. You or a customer or a thirdparty may have a 
usecase where thats desirable and now they can no longer do this.

https://ionutbalosin.com/2020/01/hotspot-jvm-performance-tuning-guidelines/

Also mentions something about native buffers, I dont know how accurate 
this is, how it works with concurrent, and how relevant it is for your 
application.

Just like Thomas I would recommend to use another garbage collector 
(Your usecase is basicly the reason they exist) and or analyze your 
problem correctly (collect gc logs) ||//Basicly try to solve the problem 
and and  not to just hide the symptoms.

I am not an expert in that matter but setting |-XX:-G1UseAdaptiveIHOP|  
and |-XX:InitiatingHeapOccupancyPercent| to something very low like 15 
might be a better alternative to call System.gc in a loop.||

Best regards,

Thorsten
//

Am 29/06/2021 um 14:04 schrieb Stefan Reich:
> Hi Thorsten,
>
> yes I used to call System.gc() once a minute. I just like to see 
> correct heap usages. However, for the server, I removed the call 
> because I didn't like the delays (they are around or slightly above 2 
> seconds BTW - actually measured this tiime :).
>
> I have just tried XX:+ExplicitGCInvokesConcurrent. I think it's good; 
> seems to do the job. So my problem may actually be solved. I'll keep 
> monitoring.
>
> > Setting /ExplicitGCInvokesConcurrent /may or may not have some 
> unintended side effects.
>
> Please elaborate, what could those be? I am not aware of any side 
> effects. I need concrete information.
>
> Best wishes,
> Stefan
>
> On Tue, 29 Jun 2021 at 09:16, Thorsten <tg at freigmbh.de 
> <mailto:tg at freigmbh.de>> wrote:
>
>     Hello,
>
>     So If I understand you correctly you explicitly invoke System.gc()
>     and get long pauses for that call. Simple Solution: remove the
>     call to System.gc() and tune from there. Worse (possible)
>     solution: try setting -XX:+/ExplicitGCInvokesConcurrent/
>
>     Setting /ExplicitGCInvokesConcurrent /may or may not have some
>     unintended side effects. I strongly recommend to remove all calls
>     to System.gc that are not for debugging/maintenance.
>
>     Best Regards,
>
>     Thorsten
>
>     //
>
>
>     Am 28/06/2021 um 19:39 schrieb Stefan Reich:
>>     Hi Thorsten!
>>
>>     Does MaxGCPauseMillis apply to System.gc() too? I thought this
>>     was for the incremental collections.
>>
>>     > Did you parse gc logs or by hand/feel?
>>
>>     What, do you think I'm a beginner??? :D
>>
>>     Joke aside, yes it was just "by feel". I know I should measure it
>>     properly. Is timing the call to System.gc() an acceptable way to
>>     measure this? As far as I know, it only returns after GC has
>>     actually completed.
>>
>>     > If you are certain that you don't need more than 800mb of live
>>     objects, limit the maxheap to something like 1.5 gb.
>>
>>     Hmm, I am rather not that certain about that... I'd like to keep
>>     the max heap around 6 GB.
>>
>>
>>     On Mon, 28 Jun 2021 at 09:35, Thorsten <tg at freigmbh.de
>>     <mailto:tg at freigmbh.de>> wrote:
>>
>>         Hello,
>>
>>         You should not get seconds long stop the world event. How did
>>         you measure the pauses? Did you parse gc logs or by hand/feel?
>>
>>         The desired max pause for g1 can be tuned using
>>
>>         |-XX:MaxGCPauseMillis=200|
>>
>>         |, so 200 ms max pause should be the default.
>>         |
>>
>>         It would be helpfull if you take gc logs and provide them.
>>         What java version are you using? In old java versions g1 is
>>         fairly bad, quality improves in newer versions.
>>
>>         You can tune and change the garbage collector using -XX
>>         Options, see for example here
>>         https://ionutbalosin.com/2020/01/hotspot-jvm-performance-tuning-guidelines/
>>         <https://ionutbalosin.com/2020/01/hotspot-jvm-performance-tuning-guidelines/>
>>
>>         Maybe you find one of the experimental garbage collectors
>>         helpfull for your application.
>>
>>         Another simple "Hack" to tune your gc speed: If you are
>>         certain that you don't need more than 800mb of live objects,
>>         limit the maxheap to something like 1.5 gb. That way your app
>>         is simply unable to collect gigabytes of garbage and your max
>>         pauses will go down.
>>
>>         Best regards,
>>
>>         Thorsten
>>
>>
>>
>>         _______________________________________________
>>         hotspot-gc-use mailing list
>>         hotspot-gc-use at openjdk.java.net
>>         <mailto:hotspot-gc-use at openjdk.java.net>
>>         https://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use
>>         <https://mail.openjdk.java.net/mailman/listinfo/hotspot-gc-use>
>>
>>
>>
>>     -- 
>>     Stefan Reich
>>     BotCompany.de // Java-based operating systems
>
>
>
> -- 
> Stefan Reich
> BotCompany.de // Java-based operating systems
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/hotspot-gc-use/attachments/20210629/6feb04b7/attachment.htm>


More information about the hotspot-gc-use mailing list