Disons que dans les deux cas, la machine virtuelle compile au vol quand elle pense que c'est utile. Comme l'assembleur .NET n'est pas facile à interpréter efficacement, tout est compilé au vol. En Java, c'est plus compliqué, mais les machines modernes compilent plus ou moins tout.
Pour l'histoire de la mémoire, l'occupation parfois délirante des JVM n'est pas liée à la notion de machine virtuelle, mais à des défauts de Java : comme on ne peut pas créer de types non objet (contrairement à C#), on subit un overhead mémoire important pour tout ce qui n'est pas type fondamentaux (un Integer prend entre 12 et 16 octets, contrairement à 4 pour un int). Cet overhead est aussi lié à la présence d'un verrou dans chaque objet pour la gestion de la concurrence. Ces problèmes n'existent pas en C#.
[^] # Re: Interessant
Posté par boubou . En réponse à la dépêche Beagle 0.2 : le "Desktop Search" gagne en stabilité. Évalué à 3.
Pour l'histoire de la mémoire, l'occupation parfois délirante des JVM n'est pas liée à la notion de machine virtuelle, mais à des défauts de Java : comme on ne peut pas créer de types non objet (contrairement à C#), on subit un overhead mémoire important pour tout ce qui n'est pas type fondamentaux (un Integer prend entre 12 et 16 octets, contrairement à 4 pour un int). Cet overhead est aussi lié à la présence d'un verrou dans chaque objet pour la gestion de la concurrence. Ces problèmes n'existent pas en C#.