Question

Est-il possible d'indiquer à la machine virtuelle Java d'indiquer au système d'exploitation qu'un objet ne doit de préférence pas être déplacé vers un espace d'échange?

Était-ce utile?

La solution

La réponse courte est non.

Java ne vous permet pas de contrôler ce qui est échangé et ce qui est "épinglé" dans la RAM.

S'inquiéter de ce genre de choses est généralement le signe qu'il y a autre chose qui ne va pas dans votre projet. Dans l’ensemble, le système d’exploitation fera beaucoup mieux pour déterminer ce qui devrait être échangé et ce qui ne devrait pas. Votre travail consiste à écrire votre logiciel de manière à ne pas tenter de deviner ce que la machine virtuelle / le système d'exploitation sous-jacent va faire, mais à vous concentrer uniquement sur la fourniture de vos fonctionnalités et d'une conception de qualité.

Autres conseils

Ce problème a également été très sensible dans Eclipse et dans le plug-in de hack sale KeepResident ( http: // suif.stanford.edu/pub/keepresident/ ) l'évite.

Cela pourrait être un bon endroit pour commencer? Je ne l’ai pas vu dans un usage répandu alors peut-être que cela a été intégré dans la distribution standard Eclipse?

Hé! Vous programmez dans un langage géré. Pourquoi y penses-tu? Si vous n'arrivez pas à vous en sortir, vous pouvez toujours choisir de programmer en C.

La réponse courte est (comme indiqué ci-dessus): ne le faites pas: -).

Ce serait toutefois possible en principe. La plupart des systèmes d’exploitation permettent de " verrouiller " certaines zones de mémoire ne sont pas échangées (par exemple, mlock (2) sous Linux, VirtualLock sous Windows ).

La machine virtuelle pourrait exposer cette fonctionnalité aux applications Java via une API appropriée. Cependant, aucune machine virtuelle que je connaisse ne le fait, donc pour le faire, vous devez d’abord modifier votre machine virtuelle ...

Si vous y accédez régulièrement, quelle que soit la page sur laquelle elle se trouve à ce moment-là (la JVM déplace des éléments pendant le nettoyage de la mémoire), elle ne sera pas paginée sauf si quelque chose d'autre demande de la mémoire de manière encore plus agressive. Mais il n’ya aucun moyen de dire à la machine virtuelle Java de ne pas la déplacer sur une autre page, et le système d’exploitation ne connaît que les pages.

Ce n'est pas une réponse, mais il manque des points à commenter, je réserve cette option:)

Il y a des raisons pour ne pas stocker d'informations dans swap. Que ce soit des mots de passe ou d'autres informations confidentielles qui ne devraient pas passer une éternité sur disque. De plus, revenant après un week-end sur mon ordinateur, j'aimerais que certaines choses soient en mémoire immédiatement disponibles.

(Non Java) Nativement, il existe probablement un moyen de le faire pour chaque / la plupart des systèmes d'exploitation. Avec les fenêtres, c'est certainement possible. Mais pas tout droit sorti de Java (pensez JNI). Selon le degré de désespoir de cette option, vous pouvez toujours utiliser la mémoire vidéo ou un autre périphérique matériel non permutable. Cela vous permet de toujours utiliser une API java standard, telle que jogl pour stocker des informations. Cependant, je doute que cela soit dans le contexte de la mise en œuvre / des résultats que vous recherchez.

En principe, vous souhaitez conserver la totalité de la machine virtuelle Java dans la mémoire principale tout le temps.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top