Précédent   Forum du club des développeurs et IT Pro > Autres langages > Autres langages > D
D Forum d'entraide sur la programmation en langage D
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/04/2010, 14h59   #1
Alkhan
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 726
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 726
Points : 967
Points : 967
Par défaut Soft reference en D

bonjour,

Je me demandais s'il existe des "soft reference" en D comme il en existe en java ?
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2010, 09h57   #2
TSalm
Membre habitué
 
Avatar de TSalm
 
Inscription : juillet 2006
Messages : 346
Détails du profil
Informations personnelles :
Localisation : France

Informations forums :
Inscription : juillet 2006
Messages : 346
Points : 135
Points : 135
Envoyer un message via Yahoo à TSalm Envoyer un message via Skype™ à TSalm
Ca existe bien avec Tango :
http://www.dsource.org/projects/tang...e.WeakRef.html
TSalm est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/04/2010, 11h20   #3
Alkhan
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 726
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 726
Points : 967
Points : 967
Oui, la weakReference existe, mais il y a une différence importante entre la weakReference et la softReference. Dans le premier cas une instance peut être libéré par le GC à n'importe quel moment, et dans le deuxième, principalement s'il y a un besoin mémoire.
Il peut donc y avoir une incidence sur les perfs si la weakReference se comporte comme en java !
J'imagine que la weakReference en D a le même fonctionnement qu'en java, c'est pour cela que je demandais s'il existait une softReference. pour le moment cela ne semble pas être le cas.
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2010, 14h44   #4
Niark13
Membre éprouvé
 
Inscription : mai 2005
Messages : 223
Détails du profil
Informations forums :
Inscription : mai 2005
Messages : 223
Points : 425
Points : 425
Non, il n'y a pas de SoftReference en D, pour la bonne et simple raison que la taille maximale du tas n'est pas fixée à l'exécution par un paramètre de machine virtuelle (java -Xmx)

D'ailleurs il n'y a pas de machine virtuelle. Le code est natif. La taille maximale du tas dépend donc de ta plateforme.
Niark13 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2010, 15h28   #5
Alkhan
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 726
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 726
Points : 967
Points : 967
Niark13 merci de ta réponse.
Ils ont quand même implémenté une weakReference.
La softReference, si elle n'existe pas encore à un intérêt dans le cadre d'applications nécessitant le changement de données importantes en mémoire.
Je pense que cela finira par arriver avec tango surement.
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2010, 15h56   #6
ponce
Membre éclairé
 
Avatar de ponce
 
Inscription : juillet 2008
Messages : 339
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juillet 2008
Messages : 339
Points : 358
Points : 358
Si c'est un besoin qui te bloque dans ton utilisation actuelle du D, c'est le genre de problème que tu pourrais exposer sur le newsgroup:

http://www.digitalmars.com/webnews/newsgroups.php

Il y aura probablement quelqu'un pour proposer une solution acceptable.
ponce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2010, 10h42   #7
Alkhan
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 726
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 726
Points : 967
Points : 967
Oui, mais je crois qu'il y en a deja qui se pose la question.

Je suis tombé sur ce post, il date de l'année dernière, mais il a permis la mise en place de la weakref.

Il est possible qu'avec tango la weak et la soft reference soit la même classe. Visiblement ils utilisent des "weakpointer" créé via le gc. Ce que je ne sais pas pour le moment c'est, est ce que les "weakpointer" peuvent être collecté à n'importe quel moment ou dans des cas spécifiques ?

Je ne voudrais pas que mon code passe sont temps à recharger les objets collectés inutilement, mais je ne peux pas non plus risquer un engorgement de la mémoire.
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/04/2010, 22h03   #8
ponce
Membre éclairé
 
Avatar de ponce
 
Inscription : juillet 2008
Messages : 339
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juillet 2008
Messages : 339
Points : 358
Points : 358
Citation:
Il est possible qu'avec tango la weak et la soft reference soit la même classe. Visiblement ils utilisent des "weakpointer" créé via le gc.
Le post que tu as pointé indique qu'une implémentation de la weak référence existe (http://www.dsource.org/projects/scra...kref/weakref.d) mais ce n'est pas dans Tango apparemment.

Citation:
Ce que je ne sais pas pour le moment c'est, est ce que les "weakpointer" peuvent être collecté à n'importe quel moment ou dans des cas spécifiques ?
En D, le GC ne travaille que lors des allocations/désallocations impliquant le GC, ou encore lorsqu'on l'appelle explicitement. Il ne se déclenche pas en interrompant ton programme en plein milieu d'un calcul.

Citation:
Envoyé par Alkhan Voir le message
Je ne voudrais pas que mon code passe sont temps à recharger les objets collectés inutilement, mais je ne peux pas non plus risquer un engorgement de la mémoire.
J'ai l'impression que tu pourrais t'en sortir avec un cache et des références normales. Quand tu as besoin de recharger une donnée, tu la mets en mémoire ; si il n'y a pas assez de mémoire, tu libères la donnée utilisée la moins récemment.

Pour récupérer le out-of-memory, tu peux utiliser le malloc du C qui renverra NULL en cas d'échec, mais je crois que new renvoie également une exception.
ponce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2010, 09h44   #9
Alkhan
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 726
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 726
Points : 967
Points : 967
Citation:
Envoyé par ponce Voir le message
Le post que tu as pointé indique qu'une implémentation de la weak référence existe (http://www.dsource.org/projects/scra...kref/weakref.d) mais ce n'est pas dans Tango apparemment.
je te confirme que la weakRef existe bien en faite elle se trouve dans le core

Citation:
Envoyé par ponce Voir le message
En D, le GC ne travaille que lors des allocations/désallocations impliquant le GC, ou encore lorsqu'on l'appelle explicitement. Il ne se déclenche pas en interrompant ton programme en plein milieu d'un calcul.
Je comprend très bien pour l'allocation, mais je ne vois pas pour la désallocation car le but du GC c'est justement de le faire à la place du programmer.
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2010, 12h40   #10
ponce
Membre éclairé
 
Avatar de ponce
 
Inscription : juillet 2008
Messages : 339
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : juillet 2008
Messages : 339
Points : 358
Points : 358
Tu peux forcer la destruction d'un objet non détruit avec delete, où encore bypasser le GC et utiliser malloc/free.
ponce est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/04/2010, 14h58   #11
Alkhan
Membre émérite
 
Avatar de Alkhan
 
Homme Sébastien Tahier
Inscription : octobre 2006
Messages : 726
Détails du profil
Informations personnelles :
Nom : Homme Sébastien Tahier
Localisation : France

Informations forums :
Inscription : octobre 2006
Messages : 726
Points : 967
Points : 967
ok, merci pour vos réponses !

je regarderais entre les différentes possibilités, comment je gèrerais le problème.
__________________
Il n'y a pas de problème, il n'y a que des solutions.
Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

Mes Articles : Mon premier article est sur le language D
Alkhan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 02h21.


 
 
 
 
Partenaires

Hébergement Web