Imaginons un langage avec un garbage collector (style ocaml) et un programme de porc du style :
{
variables_globales_d_init qui font 50 Mo ;
variables_pour_la_suite qui font 50 Mo ;
mon code d'init qui utilise les variables d'init ;
mon code pour la suite qui utilise plus les variables d'init ;
}
Je me dis que les variables utilisées pour l'init vont jamais être libérées, à moins que le compilateur ait fait une analyse statique du code pour voir à quel moment les variables cessaient d'être utilisées. Si y'a pas d'analyse statique, alors je me trimbale avec un programme qui me prend 100 Mo au lieu de 50 Mo. Ou alors je peux désalouer la ram à la main en cassant la référence vers mais variables d'init, i.e. je me fais de la gestion mémoire à la mimine, ce qui limite largement l'intérêt du garbage collector :)
# Re: L'allocation mémoire et les langages fonctionnels
Posté par Pascal Terjan (site web personnel) . Évalué à 5.
Si en java tu gardes les references vers des trucs inutiles c'est pareil.
[^] # Re: L'allocation mémoire et les langages fonctionnels
Posté par iug . Évalué à 0.
[^] # Re: L'allocation mémoire et les langages fonctionnels
Posté par Olivier Grisel (site web personnel) . Évalué à 1.
[^] # Re: L'allocation mémoire et les langages fonctionnels
Posté par Vivi (site web personnel) . Évalué à 4.
ben c'est trés simple : on fait pas (c'est pas sûr).
Si tu veux pas garder tes variables tout le temps en mémoire, il faut pas les mettre en global, c'est tout.
[^] # Re: L'allocation mémoire et les langages fonctionnels
Posté par drac . Évalué à 3.
Enfin faire en sorte déjà de coder proprement pour pas garder en mémoire des trucs qui ne serviront à rien.
# Re: L'allocation mémoire et les langages fonctionnels
Posté par free2.org . Évalué à 1.
voici quasiment le meme programme en C (peut-etre que ça marche en ocaml) qui désalloue correctement les variables d_init quand y'en a plus besoin:
{
{variables_globales_d_init qui font 50 Mo ;
static variables_pour_la_suite qui font 50 Mo ;
mon code d'init qui utilise les variables d'init ;
}
mon code pour la suite qui utilise plus les variables d'init ;
}
-------------------------------
voici encore une autre version, car
le plus sûr et le plus simple est bien sûr de le réordonner un peu:
-------------------------------------
{variables_pour_la_suite qui font 50 Mo ;
{variables_globales_d_init qui font 50 Mo ;
mon code d'init qui utilise les variables d'init ;
}
mon code pour la suite qui utilise plus les variables d'init ;
}
/* un autre avantage de cette manière de programmer avec des blocs supplémentaires, c'est que ça oblige ensuite le programmeur à éviter l'utilisation de variables globales qui génèrent des erreurs quand elles sont utilisées en même temps à des endroits très différents d'un programme */
[^] # Re: L'allocation mémoire et les langages fonctionnels
Posté par Sixel . Évalué à 1.
"Il faut" (Ezekiel 18:4) "forniquer" (Corinthiens 6:9, 10) "avec des chiens" (Thessaloniciens 1:6-9) "morts" (Timothée 3:1-10).
[^] # Re: L'allocation mémoire et les langages fonctionnels
Posté par Fabien F. . Évalué à 1.
Le monsieur devrait trouver, il en existe beaucoup, et beaucoup de gens savent en produire :)
Le monsieur, en fait, se casse le nez contre le celebre probleme dit "garbage in, garbage out", ou en bon francais avec de la merde on ne produit que de la merde. Il est raisonnablement simple d'ecrire un programme qui ne gache pas la memoire de cette facon si on utilise un langage raisonnablement bien fichu, ce qui est le cas d'ocaml. Mais on ne sait pas encore faire des langages qui permettent a de mauvais programmeurs d'ecrire des bons programmes. Tant mieux d'ailleurs, parce que ce jour la (en supposant qu'il arrive un jour...), on n'aura plus besoin de bons programmeurs !
Pour le cas particulier de la liveness analisys dans Ocaml, il est probable qu'il puisse demeler les cas les plus simples, je ne sais pas dans quelle mesure celui-la en fait partie (ca doit dependre en grande partie du code d'init des blocs de 50Mo). Mais un programmeur suffisamment mauvais arrivera toujours a ecrire des horreurs trop horribles pour que le compilo puisse les rattrapper.
# Re: L'allocation mémoire et les langages fonctionnels
Posté par benja . Évalué à 1.
http://www.pps.jussieu.fr/Livres/ora/DA-OCAML/book-ora090.html(...)
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.