Un working document décrivant l'état de Project Lambda mentionne les types SAM (méthode abstraite unique). Autant que je sache, la proposition lambda actuelle n'affecte pas l'exécution juste le compilateur en rendant possible la conversion automatique des expressions lambda à ces types.Java - Optimisation de type SAM
Je pense que dans des circonstances idéales, les instances de types SAM pourraient être représentées en interne par des pointeurs de fonction. Par conséquent, la machine virtuelle Java peut éviter l'allocation de mémoire pour ces instances.
Je me demande si les machines virtuelles modernes sont capables de fournir une telle optimisation.
Lorsque vous dites "pointeur de fonction", voulez-vous dire pointeur simple au début du code de fonction? – ffriend
@ffriend - Oui, je le fais.Je sais qu'il y a quelques problèmes avec cette approche, par exemple il est possible de synchroniser sur un objet. Mais la JVM peut également effectuer d'autres optimisations non triviales, par exemple en insérant des méthodes virtuelles. –