omportamentos do Java CMS GC

Tenho um aplicativo que causa a criação de muito lixo. O primeiro (e quase um) critério é o baixo tempo de pausa do GC. Eu tento diferentes parâmetros de GC usando a ferramenta visualgc (e gc logs). Os melhores parâmetros estão abaixo.

-XX: + UseConcMarkSweepGC

-Xmx1172M

-Xms600M

-XX: + UseParNewGC

-XX: NewSize = 150M

Minha aplicação é executada no SunOS 10 com Java 1.6.0_21. O hardware é 2 x CPU quad core (o resultado uname -X é numCPU = 8

As perguntas são

Observando comportamentos do GC, Novos objetos criados no espaço eden até que o eden esteja cheio. Quando o GC eden space full é executado, limpe o lixo, se o objeto não for cópia morta para a geração antiga (eu descarto 'de' e 'para' espaços), Similarmente a geração antiga está cheia, a GC é executada com a fase simultânea do CMS e limpa Old espaço -gen. Alguma parte do CMS é Stop-the-world (tempo de pausa). Este é um loop.

O cenário acima é verdadeiro? Depois que o GC limpa o espaço da geração antiga, não há espaço suficiente para expandir o espaço da geração antiga (os valores XMS e XMS são diferentesQuando a operação completa do GC começa? Como decidiu isso? A duração da fase simultânea no CMS depende do tamanho do espaço Eden, na verdade, minha expectativa é que o espaço Eden não afete a duração da fase simultânea no CMS. O que está acontecendo no GC relacionado ao espaço eden na fase simultânea do CMS?O que mais me sugere minimizar o tempo de pausa? Na verdade, a resposta mais valiosa para mim:)

Obrigad

questionAnswers(2)

yourAnswerToTheQuestion