Falha ao evitar a promoção no Java CMS GC

Eu tenho um aplicativo Java usando a coleta de lixo do CMS que sofre de um GC completo "ParNew (falha na promoção)" algumas vezes por dia (veja um exemplo abaixo). Entendo que ocorre uma falha na promoção quando a coleta de lixo não consegue encontrar espaço (contíguo) suficiente na geração antiga para promover um objeto da nova geração. Nesse ponto, ele é forçado a fazer um GC completo caro de parar o mundo. Eu quero evitar esses eventos.

Li vários artigos que sugerem possíveis soluções, mas queria esclarecê-los / consolidá-los aqui:

-Xmx: aumenta o tamanho da pilha, por exemplo. de 2G a 4G - solução simples para dar mais espaço na geração antiga - parece funcionar razoavelmente bem na minha experiência-XX: NewRatio: aumenta NewRatio, por exemplo. de 2 para 4, a fim de aumentar a geração antiga / diminuir a nova geração - dar mais espaço à geração antiga - não parece ter muito, se é que existe, algum efeito dos meus experimentos até agora-XX: PromotedPadding: aumente a quantidade de preenchimento fornecida para evitar falhas na promoção - no entanto, não consigo encontrar sugestões sobre quais valores dar para esse parâmetro - alguém sabe o que o valor significa, qual é o padrão ou que valores deve ser experimentar?-XX: CMSInitiatingOccupancyFraction -XX: + UseCMSInitiatingOccupancyOnly: inicie o ciclo do CMS mais cedo para evitar falta de espaço na geração antiga - eu ainda não tentei esta solução - que valores seria razoável tentar? Qual é o padrão?Não aloque objetos muito grandes no heap: um objeto muito grande pode ser difícil de promover, pois exigirá uma grande quantidade contígua de espaço livre na geração antiga - isso não se aplica ao meu aplicativo, pelo que sei

Caso seja relevante, aqui estão minhas opções atuais de GC e uma amostra de logs anteriores a um evento com falha na promoção.

-Xmx4g -XX:+UseConcMarkSweepGC -XX:NewRatio=1

2014-12-19T09:38:34.304+0100: [GC (Allocation Failure) [ParNew: 1887488K->209664K(1887488K), 0.0685828 secs] 3115998K->1551788K(3984640K), 0.0690028 secs] [Times: user=0.50 sys=0.02, real=0.07 secs] 
2014-12-19T09:38:35.962+0100: [GC (Allocation Failure) [ParNew: 1887488K->208840K(1887488K), 0.0827565 secs] 3229612K->1687030K(3984640K), 0.0831611 secs] [Times: user=0.39 sys=0.03, real=0.08 secs] 
2014-12-19T09:38:39.975+0100: [GC (Allocation Failure) [ParNew: 1886664K->114108K(1887488K), 0.0442130 secs] 3364854K->1592298K(3984640K), 0.0446680 secs] [Times: user=0.31 sys=0.00, real=0.05 secs] 
2014-12-19T09:38:44.818+0100: [GC (Allocation Failure) [ParNew: 1791932K->167245K(1887488K), 0.0588917 secs] 3270122K->1645435K(3984640K), 0.0593308 secs] [Times: user=0.57 sys=0.00, real=0.06 secs] 
2014-12-19T09:38:49.239+0100: [GC (Allocation Failure) [ParNew (promotion failed): 1845069K->1819715K(1887488K), 0.4417916 secs][CMS: 1499941K->647982K(2097152K), 2.4203021 secs] 3323259K->647982K(3984640K), [Metaspace: 137778K->137778K(1177600K)], 2.8626552 secs] [Times: user=3.46 sys=0.01, real=2.86 secs] 

questionAnswers(2)

yourAnswerToTheQuestion