|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Bonjour, je rencontre un petit soucis avec la memoire de mon jeu.
Quand je suis sur PC et que j'affiche la memoire avec GC.GetTotalMemory(false) ca ne bouge quasiment pas dans le jeu(au loading ca fuse). Mais quand je teste sur xbox ca augmente super vite pendant le jeu, j'ai meme un passage de GC toutes les 5 secondes environ. Avez vous une idee d'ou cela peut venir? Sachant que les tests sur xbox et pc sont les memes ... Merci. |
|
|
00
|
|
|
#2 |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 449 ![]() |
C'est tout à fait normal.
Le framework .net de la xbox est le micro framework .net qui ne dispose pas d'un garbage collector aussi efficace. Concrètement si tu veux que ton jeu tourne correctement sur xbox il ne faut JAMAIS allouer de mémoire durant la boucle principale de jeu. Cela signifie : - Allouer une taille suffisante pour les listes à la création - Avoir un système de pooling pour réutiliser les objets déjà crées plutôt que les instancier. - Eviter le boxing qui alloue de la mémoire - Faire attention avec les strings qui alloue de la mémoire à chaque concaténation. Bon courage !! |
|
|
20
|
|
|
#3 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Je comprend bien ce que tu me dis puisque j'ai lu pas mal de doc sur le garbage .net
Mais lorsque je profile j'obtiens cela : ![]() Soit Game.Run qui prend quasiment 100% des allocations et donc je ne peux rien modifier dans ce code puisque apres il appelle ses propres fonctions. Mais lorsque j'affiche le GC.GetTotalMemory sur pc il ne grandit pas in game... et sur xbox si. Au depart j'avais des events des ToString et des new List(0); Du coup j'ai change tout ca pour faire disparaitre mon garbage, mais la je ne peux plus rien faire car c'est .Net qui fait ca tambouille En faite si il n'alloues pas de memoire sur PC (GC.GetTotalMemory constant) je ne vois pas pourqu'oi il en allouerait sur Xbox. Bref , merci. |
|
|
10
|
|
|
#4 | |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 449 ![]() |
Citation:
J'ai eu un problème similaire je ne me souviens plus du problème exacte mais je l'ai trouvé en commentant toute l'update et en dé-commentant petit à petit. Tu vas t'amuser |
|
|
|
20
|
|
|
#5 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Hum...
Toi quand tu profiles in game la courbe a un Y de 0?^^ Donc ce serait un bug du profiler de visual xD? |
|
|
00
|
|
|
#6 |
|
Membre chevronné
![]() Développeur de jeux vidéo Inscription : février 2006 Messages : 449 ![]() |
Si tu as un freeze parce que le GC passe il n'y a pas de bug d'affichage, tu as bien un soucis.
J'utilise Xna framework remote performance monitor et quand je n'ai plus de soucis je vois bien que rien n'est alloué ! |
|
|
20
|
|
|
#7 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
Ok merci je vais tester ca!
|
|
|
00
|
|
|
#8 |
|
Membre confirmé
![]() Inscription : janvier 2008 Messages : 576 ![]() |
C'est bon j'ai un defi => 30 Gc.Collect en 30 secondes^^
(merci pour le nom du tools MoDDiB) |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com