Je n'ai jamais vu de telles déclarations cependant, existe-t-il dans le monde de Java? P>
5 Réponses :
Nouveau code> au lieu de
MALLOC code>, collecteur à ordures au lieu de libre. P>
La version de Java de en Java, la mémoire est gérée pour vous, vous ne pouvez donc pas explicitement MALLOC code> est
Nouveau code> - Il crée un nouvel objet d'un type spécifié. P>
Supprimer code> ou
gratuit code> un objet. P>
Donc, je ne peux pas accéder directement à l'espace mémoire?
Non, vous ne pouvez pas accéder à l'adresse de pointeur / mémoire sous-jacente d'un objet Java via des moyens sains. C # vous permet de faire cela à l'aide du mot-clé dangereux code>: msdn.microsoft.com/en-us/library/chfa2zb8 (v = vs.100) .aspx Veuillez noter que c'est très, très rarement nécessaire.
Référencer l'objet que vous souhaitez libérer pour NULL indique à la mémoire de collectionneur de la poubelle si elle est libre de collecter.
Java a un collecteur à ordures. C'est pourquoi vous ne voyez jamais de telles déclarations dans votre code (qui est agréable si vous me demandez) p>
en informatique, ordures La collection (GC) est une forme de automatique gestion de la mémoire. C'est une spéciale cas de gestion des ressources, dans lequel La ressource limitée étant gérée est Mémoire. Le collecteur des ordures, ou juste Collecteur, tente de récupérer ordures ou mémoire occupées par des objets qui ne sont plus utilisés par la programme. La collecte des ordures était inventé par John McCarthy vers 1959 résoudre des problèmes dans Lisp. p> blockQuote>
Aucun équivalent direct n'existe en Java: P>
C Java n'a pas le concept d'objet non typa et ne vous permet pas d'accéder directement à la mémoire. Le plus proche que vous puissiez entrer en Java à C Java ne vous permet pas de libérer explicitement des objets. La classification de l'objet dans Java est totalement entre les mains du collecteur des ordures. Dans certains cas, vous pouvez influencer le comportement du GC; par exemple. En attribuant MALLOC code> crée un nœud de tas non typé et vous renvoie un pointeur qui vous permet d'accéder à la mémoire, mais vous voulez. p>
MALLOC code> serait
nouveau octet [Taille] code>, mais qui vous retourne un objet fortement dactylographié que vous ne pouvez utiliser que comme tableau d'octets. p>
GRATUIT code> libère un nœud de tas. p>
null code> à une variable de référence et appelant
system.gc () code>. Cependant, cela ne force pas l'objet d'être distribué ... et est une façon très coûteuse de procéder. P>
Si vous n'êtes pas bon (TM), je suppose que vous pouvez accéder à la mémoire brute bien que l'interface JNI. C'est là que vous pouvez appeler C Programmes de programmes Java. Bien sûr, vous devez être exécuté dans un environnement où votre programme a les privilèges à le faire (un navigateur ne le permettra pas normalement de cela à moins qu'il ne soit suicidaire), mais vous pouvez accéder aux objets via des indicateurs C de cette façon. P>
Je me demande où vient la question initiale. À un moment donné, j'ai été totalement sceptique de la notion selon laquelle la gestion de la mémoire de style C et les pointeurs de style C n'étaient pas nécessaires, mais à ce stade, je suis vrai croyant. P>
+1 Pour indiquer JNI, non que cela permettra d'accéder automatiquement à la gestion de l'objet, mais à l'aide de JNI One peut traiter de la mémoire / des ressources non gérées si elles le souhaitent.