[RESOLU]Utilisation excessive de la RAM par Unity sur mon projet.

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

[RESOLU]Utilisation excessive de la RAM par Unity sur mon projet.

Message par TheParadox » 06 Sep 2019 05:08

Bonjour, Bonsoir

J'ai un problème assez gênant depuis peu : Unity utilise beaucoup trop de RAM sur mon projet actuel.

Une fois la scène lancée, la RAM utilisée peut monter jusqu'à 11 GO, et même avec mes 16 GO de RAM mon ordinateur ralentit beaucoup et le jeu aussi.
Une fois le mode Play arrêté, Unity mets quelques minutes à réduire son utilisation de la RAM et se stabilise aux alentours des 1 GO (ce qui me semble correct dans l'Editeur).

Étant donné que quasiment tout est généré procéduralement, une utilisation élevée de la RAM ne m'étonne pas, mais 11 GO quand même.... Surtout que je ne génère ou clone aucune Texture ou Image.
La seule source logique viendrait des Instantiate à répétition (les armes qui Instancient des balles,,beaucoup de balles ; les ennemis qui spawnent), mais même là, pas de quoi atteindre 11GO à mon avis..

Je vois la consommation de la RAM avec le Gestionnaire des tâches. La profiler de Mémoire de Unity ne semble pas fonctionner, ou alors il affiche des valeurs fausses puisqu'il indique seulement 1 GB :
k.png
k.png (267.06 Kio) Consulté 3741 fois
Qu'est ce qui pourrait causer cette utilisation excessive de RAM ?
Dernière édition par TheParadox le 08 Sep 2019 22:51, édité 1 fois.
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Deceleris
Messages : 57
Inscription : 25 Juil 2018 22:06
Contact :

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par Deceleris » 06 Sep 2019 08:26

Franchement à mon humble avis je vois pas, à pars ce que tu as toi même cité.

Le mieux pour ton problème c'est que tu fasse une phase de tests / débogages, ou tu actives ou non l'instanciation de certains éléments. Soit tu désactive la génération, soit tu désactive le spawn des balles et tu détermine ce qui est le plus influent, à la bonne franquette :mrgreen:

Mais dans tout les cas, l'instanciation est un truc lourd qui nécessite la création d'un objet, et de tout ses composants. Fait des dizaines voir des centaines de fois par secondes ça à de lourdes conséquences.

Pour optimiser ça t'as 2 options selon moi : tu peut utiliser une méthode de pooling ou alors tu optimise à block ton instanciation.
Travail actuellement sur : https://deceleris.itch.io/shadows

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par TheParadox » 06 Sep 2019 21:39

Alors, je viens de faire quelques tests :

Désactivé SEGI, peut être qu'en générant des 'lightmaps' dynamiquement il consommait trop
Résultat : Aucune amélioration;

Désactivé les armes (les ennemis ne tirent plus donc pas d'instanciation de balles).
Résultat : Pareil, aucun changement.

Désactivé le générateur procédural (donc plus de map quasiment, à part ce qui est déjà là, plus de spawn des ennemis, donc la scène se résume à quelques murs, un sol, et quelques ennemis déjà placés proches du joueur).
Résultat : aucun changements...

Rien de tout cela n'a amélioré la consommation de RAM... Unity en consomme progressivement de plus en plus, jusqu'à atteindre les 8 GO assez rapidement...
Ce qui est étrange c'est justement cette augmentation progressive : ça veut dire que Unity remplie la RAM au court du temps avec quelque chose d'assez lourd (pour atteindre les 8 GO quand même)...
D'autant plus que ensuite, une fois le mode Play arrêté, Unity mets plusieurs minutes à vider la RAM, parfois même plus longtemps encore....

Je ne vois vraiment pas ce qui peut causer ça...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par Alesk » 06 Sep 2019 22:37

Fuite mémoire dans un des scripts...
Le profiler de donne vraiment aucune info pertinente à ce sujet ? Il sert entre autre à ça justement :gene:

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par TheParadox » 06 Sep 2019 22:57

Alesk a écrit :
06 Sep 2019 22:37
Fuite mémoire dans un des scripts...
C'est à dire ?
Alesk a écrit :
06 Sep 2019 22:37
Le profiler de donne vraiment aucune info pertinente à ce sujet ? Il sert entre autre à ça justement
J'avoue que je suis assez novice avec le profiler :mrgreen: En tous cas avec le profile de mémoire....
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par Alesk » 07 Sep 2019 10:04

Une fuite mémoire ("memory leak" en anglais), c'est comme une fuite d'eau :gene:

Tu as un bout de script qui stocke d'une façon ou d'une autre des données en RAM, mais ça n'est jamais libéré, et ça s'accumule -> https://fr.wikipedia.org/wiki/Fuite_de_m%C3%A9moire

Avec le profiler, tu peux normalement voir quelle quantité de RAM est associée à chaque fonction exécutée par ton appli.
A partir de là, tu devrais facilement trouver le coupable.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par TheParadox » 07 Sep 2019 13:19

Je viens de remarquer que le problème est encore plus étrange que je le pensais, et que c'est pour ça que le profile ne semble pas aider :

Là je venais de lancer Unity et j'ai lancé le mode Play, tout fonctionne bien ,la RAM se stabilise autour des 3 GO (ce qui est assez élevé mais ca reste correct).
Mais ensuite, quand je quitte le mode Play, la RAM reste remplie (ou se vide mais très lentement), et ensuite quand je relance le mode Play, Unity rajoute encore en plus des trucs dans la RAM.

Donc en fait, à chaque fois que je lance le mode Play, Unity remplis un peu la RAM, jusqu'à atteindre un dizaine de GO assez rapidement.... La après un troisième lancement, Unity était déjà à 8 GO, et une dizaines de minutes plus tard, il est redescendu à 4.

Le problème semble donc venir de Unity qui ne vide pas ce qu'il a mis dans la RAM....

Du coup je suis obligé de redémarrer Unity régulièrement pour éviter qu'il ne sature la RAM, ralentisse, et même parfois crash ou fasse crash d'autre applications...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
Alesk
Messages : 2303
Inscription : 13 Mars 2012 09:09
Localisation : Bordeaux - France
Contact :

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par Alesk » 07 Sep 2019 16:19

Ok, mais c'est forcément lié au code que tu exécutes ;)

Désactives des morceaux de ton jeu à chaque lancement et vois lequel provoque cette montée en conso de RAM.
C'est pas normal du tout.
Déjà tu peux commencer par tester sans SEGI, pour voir si ce n'est pas lui le fautif.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par TheParadox » 07 Sep 2019 17:40

Bon je viens de limiter le problème en désactivant les ennemis morts au lieu de les Destroy, puis en en réinitialisant un quand je dois en faire spawn un plutôt que d'en instancier un nouveau.
La RAM utilisée à l'air de se stabiliser autour des 5-6 GO..

Mais je ne suis pas sur du tout que ça aura corrigé le problème à plus long terme...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Avatar de l’utilisateur
TheParadox
Messages : 84
Inscription : 12 Juil 2017 19:54
Localisation : France

Re: Utilisation excessive de la RAM par Unity sur mon projet.

Message par TheParadox » 07 Sep 2019 18:11

Pas du tout au final, Unity consomme toujours de plus en plus... Il mets juste plus longtemps qu'avant à atteindre les 10 GO et à planter :lol:
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.

Répondre

Revenir vers « Unity le logiciel »