Dudas sobre la recolección de basura en java

Sé que se han hecho muchas preguntas sobre la recolección de basura y las he revisado, pero aún tengo algunas dudas.

Si no podemos forzar la JVM para la recolección de basura, ¿cuál es la necesidad deSystem.gc()? ¿En qué escenario es útil?

Sé sobre la generación joven [eden, SO, S1] y la generación anterior y cómo se mueven los objetos de generación joven a generación anterior. ¿Cuándo se moverá un Objeto a la generación permanente? Por ejemplo, tengomycar objeto que tiene referencia y no es elegible para la recolección de basura, así que cuándo serámycar objeto se moverá en generación permanente?

He leído que las variables estáticas se almacenan en generación permanente. ¿Cuándo serán recolectados basura y qué tipo de otros objetos se almacenan en la generación permanente? ¿Por qué las variables estáticas se almacenan en la generación permanente y para qué sirve la generación permanente?

Sé que los objetos se almacenan en la memoria del montón. ¿Es cierto que cada aplicación tiene su propia memoria de almacenamiento dinámico?

¿Es cierto que llamarSystem.gc() reduce el rendimiento de la aplicación y ralentiza nuestra aplicación? ¿O cuando JVM realiza la recolección de basura, reduce el rendimiento de la aplicación y puede hacer que nuestra aplicación funcione lentamente?

¿En qué casos se realiza la recolección parcial de basura y cuándo se realiza la recolección principal de basura?

Respuestas a la pregunta(2)

Su respuesta a la pregunta