Por que definir classe como final melhora o desempenho da JVM?

Citando dehttp://sites.google.com/site/gson/gson-design-document:

Por que a maioria das aulas no Gson é marcada como final?

Enquanto o Gson fornece uma arquitetura bastante extensível, fornecendo serializadores e desserializadores conectáveis, as classes Gson não foram projetadas especificamente para serem extensíveis. O fornecimento de classes não finais permitiria ao usuário estender legitimamente as classes Gson e esperaria que esse comportamento funcionasse em todas as revisões subseqüentes. Optamos por limitar esses casos de uso marcando as classes como finais e aguardando até que um bom caso de uso surja para permitir extensibilidade. Marcar uma final de classe também tem um benefício menor de fornecer oportunidades adicionais de otimização para o compilador Java e a máquina virtual.

Por que esse é o caso? [Se eu adivinhar: da JVM sabe que a classe é final, ela não mantém tabelas de substituição de método? Existem outros motivos?]

Qual é o benefício no desempenho?

Isso se aplica a classes que são instanciadas por frequência (POJO?) Ou talvez a classes que possuem métodos estáticos de titulares (classes Utility)?

Os métodos definidos como finais também podem teoricamente melhorar o desempenho?

Existem implicações?

Obrigado, Maxim.

questionAnswers(5)

yourAnswerToTheQuestion