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.