Dúvidas sobre Coleta de Lixo em java

Sei que muitas perguntas foram feitas sobre a Coleta de Lixo e já passei por elas, mas ainda tenho algumas dúvidas.

Se não podemos forçar a JVM para coleta de lixo, qual é a necessidade deSystem.gc()? Em que cenário é útil?

Eu sei sobre geração jovem [eden, SO, S1] e geração antiga e como os objetos são movidos da geração jovem para a geração antiga. Quando um Objeto será movido para geração permanente? Por exemplo, eu tenhomycar objeto que tem referência e não é elegível para coleta de lixo; portanto, quando serámycar objeto se moverá em geração permanente?

Eu li que variáveis estáticas são armazenadas em geração permanente. Quando eles serão coletados e que tipo de outros objetos serão armazenados em geração permanente? Por que as variáveis estáticas são armazenadas na geração permanente e para que serve a geração permanente?

Eu sei que os objetos são armazenados na memória heap. É verdade que todo aplicativo tem sua própria memória heap?

É verdade que ligarSystem.gc() reduz o desempenho do aplicativo e retarda nosso aplicativo? Ou sempre que a coleta de lixo é feita pela JVM, reduz o desempenho do aplicativo e pode fazer com que nosso aplicativo funcione lentamente?

Em quais casos a coleta de lixo parcial é realizada e quando é realizada a coleta de lixo principal?

questionAnswers(2)

yourAnswerToTheQuestion