cs_heavenboy
Messages postés22Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention 1 décembre 2009
-
9 juil. 2009 à 10:28
cs_heavenboy
Messages postés22Date d'inscriptionjeudi 21 mai 2009StatutMembreDernière intervention 1 décembre 2009
-
10 juil. 2009 à 22:40
Bonjour,
je fais tourner de grosses applications java sur ubuntu, qui me prennent toute la RAM. Plus question de faire d'autre chose quand ces applications tournent. J'ai entendu parler de la swap. J'ai lu que la swap pouvait pallier la ram dans de tel cas. Pourriez vous me dire comment je peux dire à mes applications de tourner sur la swap et non sur la ram.
kirua12
Messages postés1155Date d'inscriptionsamedi 17 janvier 2004StatutMembreDernière intervention29 avril 20117 9 juil. 2009 à 10:35
Salut,
le swap est géré par l'OS et non par l'appli. Ca fait partie de ce qu'on appelle la "mémoire virtuelle" (RAM + swap)
Sur un linux, la RAM est utilisée au max. Si ce n'est pas suffisant c'est le système qui va décider d'utiliser le swap.
De plus l'utilisation du swap ralentit l'application car les accès disque sont plus lents que les accès en RAM.
Kotomine
Messages postés112Date d'inscriptionlundi 29 juin 2009StatutMembreDernière intervention 5 novembre 2009 9 juil. 2009 à 10:52
Et surtout, quelques notions de Système d'exploitation (et d'ordinateur).
La mémoire ne peut être utilisée (pour faire des calculs) QU'UNE FOIS DANS LA RAM !
Il pourrait être possible de brancher les bus d'addresse et de données du CPU sur un controleur de disque, et d'avoir ainsi une "ram sur disque dur".. pour un CPU de 10 hz ! (donc la seule chose qui va tourner, c'est pas ton appli mais ton disque ...)
Mais, cela dit , les systèmes d'exploitation découpent la mémoire des programmes en "pages" . Une page peut être sur la ram, ou dans la swap.
Aux programmeurs de choisir le bon design pour minimiser le nombre de pages accédées en même temps.
Ceci dit, sur linux , tu peux à l'aide de la commande "nice", réduire l'importance d'une appli dans le CPU (et donc dans la ram, car linux met dans la RAM ce qui n'est pas actif)
nice -n 20 java -jar monjar.jar
La commande ci-dessus lance une appli java avec la priorité minimale (20)
Plus le nice est grand, plus la priorité est basse.
;I'm just keeping the hopeless cross to increase the meaninglessness
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 9 juil. 2009 à 10:58
Salut,
Il ne tiens qu'à toi d'optimiser ton programme pour qu'il consomme moins de mémoire, en utilisant des patterns adéquat : le poids mouche par exemple qui permet d'éviter d'avoir une multitude de petits objets en mémoire (qui prennent donc beaucoup de mémoire) et ainsi économiser beaucoup de RAM et de SWAP.
Rappelle toi aussi qu'en java un objet non utilisé n'est pas forcément libéré de la mémoire, donc ca peut être normal qu'un programme qui utilise de nombreux objets temporaire voit son occupation mémoire grimper très haut, et quand le garbage collector se déclenche, son occupation mémoire retombe à des niveaux bien plus raisonnables.
Kotomine
Messages postés112Date d'inscriptionlundi 29 juin 2009StatutMembreDernière intervention 5 novembre 2009 9 juil. 2009 à 11:11
yup mais en général, objet non inutilisé et garbage collector pas passé -> objet non déplacé en mémoire et non écrit/lu -> L'OS balance sa page dans la swap (enfin, si la page n'était utilisée que par l'objet ... )
on va retomber dans les eternels débats d'obtimisations de mallocateur de mémoire visant à regrouper les objets peu utilisés dans une même zone de mémoire.. ce qu'on ne peut PAS faire en java :p
I'm just keeping the hopeless cross to increase the meaninglessness
Vous n’avez pas trouvé la réponse que vous recherchez ?