Utilisez-le pour accéder et allouer efficacement de grandes quantités de mémoire, comme dans votre propre moteur voxel! (c'est-à-dire un jeu de style Minecraft.)
D'après mon expérience, la JVM est souvent incapable d'éliminer la vérification des limites là où vous en avez vraiment besoin. Par exemple, si vous parcourez un grand tableau, mais que l'accès à la mémoire réel est caché sous un appel de méthode non virtuel * dans la boucle, la JVM peut toujours effectuer une vérification des limites avec chaque accès au tableau, plutôt qu'une seule fois juste avant la boucle. Ainsi, pour des gains de performances potentiellement importants, vous pouvez éliminer la vérification des limites JVM à l'intérieur de la boucle via une méthode qui utilise sun.misc.Unsafe pour accéder directement à la mémoire, en vous assurant d'effectuer vous-même les limites aux bons endroits. (Vous êtes Gonna bornes vérifier à un certain niveau, non?)
* par non virtuel, je veux dire que la JVM ne devrait pas avoir à résoudre dynamiquement quelle que soit votre méthode particulière, car vous avez correctement garanti que la classe / méthode / instance est une combinaison de statique / final / ce que vous avez.
Pour mon moteur de voxel maison, cela a entraîné un gain de performances spectaculaire lors de la génération et de la sérialisation des blocs (aux endroits où je lisais / écrivais sur l'ensemble de la baie à la fois). Les résultats peuvent varier, mais si le manque d'élimination des limites est votre problème, cela le corrigera.
Il y a des problèmes potentiellement majeurs avec cela: en particulier, lorsque vous fournissez la possibilité d'accéder à la mémoire sans vérification des limites aux clients de votre interface, ils en abuseront probablement. (N'oubliez pas que les pirates peuvent également être des clients de votre interface ... en particulier dans le cas d'un moteur voxel écrit en Java.) Ainsi, vous devez soit concevoir votre interface de manière à ce que l'accès à la mémoire ne puisse pas être abusé, ou vous devez être extrêmement prudent pour valider les données utilisateur avant qu'elles ne puissent jamais, jamais se mélanger avec votre interface dangereuse. Compte tenu des choses catastrophiques qu'un pirate peut faire avec un accès mémoire non contrôlé, il est probablement préférable d'adopter les deux approches.