je viens de lire en face qu'une solution API (cf ci-dessous) permet de
libérer la mémoire utilisée par les programmes WD (de la même façon que
l'iconisation/restauration de l'appli)
Quelqu'un a-t-il un retour (positif ou pas) sur cette fonction,
notamment pour des programmes fonctionnant en service ?
Sinon, je vais m'empresser de tester cela...
Ca fait un bon moment que je n'ai pas de solution à ces problèmes,
hormis d'arreter et relancer automatiquement mes programmes
quotidiennement.
A+
http://forum.pcsoft.fr/post.awp?id=85866
**********************************
// 2005 Fabrice De Weerd.
// http://fdw.dontexist.com
//
PROCEDURE apiSwapToVM()
// Swap to Virtual Memory
LOCAL
nHdl est un entier = 0
SI SysVersionWindows() _DANS_ ("NT 3.5","NT 4","NT
5","XP","2003S","VISTA") ALORS
nHdl = API("KERNEL32","GetCurrentProcess")
API("KERNEL32","SetProcessWorkingSetSize",nHdl,-1,-1)
FIN
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Daniel
Salut,
Romain PETIT a écrit :
Salut,
je viens de lire en face qu'une solution API (cf ci-dessous) permet de libérer la mémoire utilisée par les programmes WD (de la même façon que l'iconisation/restauration de l'appli)
Quelqu'un a-t-il un retour (positif ou pas) sur cette fonction, notamment pour des programmes fonctionnant en service ?
Sinon, je vais m'empresser de tester cela... Ca fait un bon moment que je n'ai pas de solution à ces problèmes, hormis d'arreter et relancer automatiquement mes programmes quotidiennement.
A+
http://forum.pcsoft.fr/post.awp?id 866
********************************** // 2005 Fabrice De Weerd. // http://fdw.dontexist.com // PROCEDURE apiSwapToVM() // Swap to Virtual Memory
LOCAL nHdl est un entier = 0
SI SysVersionWindows() _DANS_ ("NT 3.5","NT 4","NT 5","XP","2003S","VISTA") ALORS nHdl = API("KERNEL32","GetCurrentProcess") API("KERNEL32","SetProcessWorkingSetSize",nHdl,-1,-1) FIN
Si tes services figent par accroissement, normalement devrait faire l'affaire.
J'utilise le code ci-dessous, et m' a permis de résoudre les problèmes de libération de mémoire. En fait, je l'avais tiré du thread dont tu parles, c'est pour cela que je l'ai communiqué sur la liste en face.
Toutefois attention, je ne suis pas persuadé qu'il s'agisse de fuite, mais plus de libérer de la mémoire réservée qui ne se libère pas automatiquement. Mais que tu peux faire avec des utilitaires tel que "empty.exe".
Le seul effet que j'ai constaté est un ralentissement de l'appli, qui doit recharger le code libéré.
PROCEDURE FREE_MEM() Xl_nHDL est entier RetourFonction est un entier
SI SysVersionWindows(sysVersionPlateForme)="NT" ALORS Xl_nHDL=API("Kernel32","GetCurrentProcess") RetourFonction=API("psapi","EmptyWorkingSet",Xl_nHDL) SI RetourFonction = 0 ALORS Erreur(ErreurInfo()) RETOUR FIN FIN
-- suivre ce lien pour répondre: http://cerbermail.com/?2KrV3YZXnn Daniel ;-)
Salut,
Romain PETIT a écrit :
Salut,
je viens de lire en face qu'une solution API (cf ci-dessous) permet de
libérer la mémoire utilisée par les programmes WD (de la même façon que
l'iconisation/restauration de l'appli)
Quelqu'un a-t-il un retour (positif ou pas) sur cette fonction,
notamment pour des programmes fonctionnant en service ?
Sinon, je vais m'empresser de tester cela...
Ca fait un bon moment que je n'ai pas de solution à ces problèmes,
hormis d'arreter et relancer automatiquement mes programmes
quotidiennement.
A+
http://forum.pcsoft.fr/post.awp?id 866
**********************************
// 2005 Fabrice De Weerd.
// http://fdw.dontexist.com
//
PROCEDURE apiSwapToVM()
// Swap to Virtual Memory
LOCAL
nHdl est un entier = 0
SI SysVersionWindows() _DANS_ ("NT 3.5","NT 4","NT
5","XP","2003S","VISTA") ALORS
nHdl = API("KERNEL32","GetCurrentProcess")
API("KERNEL32","SetProcessWorkingSetSize",nHdl,-1,-1)
FIN
Si tes services figent par accroissement, normalement devrait faire
l'affaire.
J'utilise le code ci-dessous, et m' a permis de résoudre les problèmes
de libération de mémoire. En fait, je l'avais tiré du thread dont tu
parles, c'est pour cela que je l'ai communiqué sur la liste en face.
Toutefois attention, je ne suis pas persuadé qu'il s'agisse de fuite,
mais plus de libérer de la mémoire réservée qui ne se libère pas
automatiquement. Mais que tu peux faire avec des utilitaires tel que
"empty.exe".
Le seul effet que j'ai constaté est un ralentissement de l'appli, qui
doit recharger le code libéré.
PROCEDURE FREE_MEM()
Xl_nHDL est entier
RetourFonction est un entier
SI SysVersionWindows(sysVersionPlateForme)="NT" ALORS
Xl_nHDL=API("Kernel32","GetCurrentProcess")
RetourFonction=API("psapi","EmptyWorkingSet",Xl_nHDL)
SI RetourFonction = 0 ALORS
Erreur(ErreurInfo())
RETOUR
FIN
FIN
--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
je viens de lire en face qu'une solution API (cf ci-dessous) permet de libérer la mémoire utilisée par les programmes WD (de la même façon que l'iconisation/restauration de l'appli)
Quelqu'un a-t-il un retour (positif ou pas) sur cette fonction, notamment pour des programmes fonctionnant en service ?
Sinon, je vais m'empresser de tester cela... Ca fait un bon moment que je n'ai pas de solution à ces problèmes, hormis d'arreter et relancer automatiquement mes programmes quotidiennement.
A+
http://forum.pcsoft.fr/post.awp?id 866
********************************** // 2005 Fabrice De Weerd. // http://fdw.dontexist.com // PROCEDURE apiSwapToVM() // Swap to Virtual Memory
LOCAL nHdl est un entier = 0
SI SysVersionWindows() _DANS_ ("NT 3.5","NT 4","NT 5","XP","2003S","VISTA") ALORS nHdl = API("KERNEL32","GetCurrentProcess") API("KERNEL32","SetProcessWorkingSetSize",nHdl,-1,-1) FIN
Si tes services figent par accroissement, normalement devrait faire l'affaire.
J'utilise le code ci-dessous, et m' a permis de résoudre les problèmes de libération de mémoire. En fait, je l'avais tiré du thread dont tu parles, c'est pour cela que je l'ai communiqué sur la liste en face.
Toutefois attention, je ne suis pas persuadé qu'il s'agisse de fuite, mais plus de libérer de la mémoire réservée qui ne se libère pas automatiquement. Mais que tu peux faire avec des utilitaires tel que "empty.exe".
Le seul effet que j'ai constaté est un ralentissement de l'appli, qui doit recharger le code libéré.
PROCEDURE FREE_MEM() Xl_nHDL est entier RetourFonction est un entier
SI SysVersionWindows(sysVersionPlateForme)="NT" ALORS Xl_nHDL=API("Kernel32","GetCurrentProcess") RetourFonction=API("psapi","EmptyWorkingSet",Xl_nHDL) SI RetourFonction = 0 ALORS Erreur(ErreurInfo()) RETOUR FIN FIN
-- suivre ce lien pour répondre: http://cerbermail.com/?2KrV3YZXnn Daniel ;-)
Romain PETIT
Daniel a exposé le 16/02/2007 :
Salut,
Salut,
PROCEDURE apiSwapToVM()
PROCEDURE FREE_MEM()
Ok, je vois ici que les 2 API font la même chose (EmptyWorkingSet est juste appellée par une DLL supplémentaire, psapi)
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Romain PETIT
Après mure réflexion, Daniel a écrit :
Salut,
Salut,
PROCEDURE apiSwapToVM()
PROCEDURE FREE_MEM()
Si tes services figent par accroissement, normalement devrait faire l'affaire.
Je reste dubitatif. Je vois ici et là que ce n'est qu'un cache misère et que le remede risque d'être pire que le mal : http://www.bitsum.com/winmemboost.asp http://groups.google.fr/group/borland.public.cppbuilder.nativeapi/browse_frm/thread/656eae8ed23df311
En fait, il s'agit seulement de transférer sur le disque ce qui est occupé par la RAM (un swap). Ca ne regle pas le fait que l'appli en question libère mal la mémoire consommée. Pire ! Il semble que cela grignotte les performances et risque de pertuber l'OS dans sa gestion de la RAM...
Un retour d'expérience dans le monde réel et sur le long terme serait le bienvenu... En attendant de pouvoir faire des tests plus poussés, je retourne à mon ancienne stratégie (fermeture auto qutodienne des applis et relance par XYNTService).
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Après mure réflexion, Daniel a écrit :
Salut,
Salut,
PROCEDURE apiSwapToVM()
PROCEDURE FREE_MEM()
Si tes services figent par accroissement, normalement devrait faire
l'affaire.
Je reste dubitatif.
Je vois ici et là que ce n'est qu'un cache misère et que le remede
risque d'être pire que le mal :
http://www.bitsum.com/winmemboost.asp
http://groups.google.fr/group/borland.public.cppbuilder.nativeapi/browse_frm/thread/656eae8ed23df311
En fait, il s'agit seulement de transférer sur le disque ce qui est
occupé par la RAM (un swap).
Ca ne regle pas le fait que l'appli en question libère mal la mémoire
consommée.
Pire ! Il semble que cela grignotte les performances et risque de
pertuber l'OS dans sa gestion de la RAM...
Un retour d'expérience dans le monde réel et sur le long terme serait
le bienvenu...
En attendant de pouvoir faire des tests plus poussés, je retourne à mon
ancienne stratégie (fermeture auto qutodienne des applis et relance par
XYNTService).
A+
--
Romain PETIT
http://cerbermail.com/?O16kfXOFcq
(cliquez sur le lien ci-dessus pour me contacter en privé)
Si tes services figent par accroissement, normalement devrait faire l'affaire.
Je reste dubitatif. Je vois ici et là que ce n'est qu'un cache misère et que le remede risque d'être pire que le mal : http://www.bitsum.com/winmemboost.asp http://groups.google.fr/group/borland.public.cppbuilder.nativeapi/browse_frm/thread/656eae8ed23df311
En fait, il s'agit seulement de transférer sur le disque ce qui est occupé par la RAM (un swap). Ca ne regle pas le fait que l'appli en question libère mal la mémoire consommée. Pire ! Il semble que cela grignotte les performances et risque de pertuber l'OS dans sa gestion de la RAM...
Un retour d'expérience dans le monde réel et sur le long terme serait le bienvenu... En attendant de pouvoir faire des tests plus poussés, je retourne à mon ancienne stratégie (fermeture auto qutodienne des applis et relance par XYNTService).
A+
-- Romain PETIT http://cerbermail.com/?O16kfXOFcq (cliquez sur le lien ci-dessus pour me contacter en privé)
Daniel
Salut, Romain PETIT a écrit :
Après mure réflexion, Daniel a écrit :
Salut,
Salut,
PROCEDURE apiSwapToVM()
PROCEDURE FREE_MEM()
Si tes services figent par accroissement, normalement devrait faire l'affaire.
Je reste dubitatif. Je vois ici et là que ce n'est qu'un cache misère et que le remede risque d'être pire que le mal : http://www.bitsum.com/winmemboost.asp http://groups.google.fr/group/borland.public.cppbuilder.nativeapi/browse_frm/thread/656eae8ed23df311
En fait, il s'agit seulement de transférer sur le disque ce qui est occupé par la RAM (un swap). Ca ne regle pas le fait que l'appli en question libère mal la mémoire consommée. Pire ! Il semble que cela grignotte les performances et risque de pertuber l'OS dans sa gestion de la RAM...
Un retour d'expérience dans le monde réel et sur le long terme serait le bienvenu... En attendant de pouvoir faire des tests plus poussés, je retourne à mon ancienne stratégie (fermeture auto qutodienne des applis et relance par XYNTService).
A+
C'est pour cela que que j'avais mis un avertissement et qu'on ne parlait pas de fuite mémoire.
La fonction permet uniquement de libérer la RAM servant de cache à l'application, ce qui fait qu'elle diminue les performances de l'application, mais aide tout de même windows à libérer ce cache, que Windows a parfois du mal à libérer.
@+
-- suivre ce lien pour répondre: http://cerbermail.com/?2KrV3YZXnn Daniel ;-)
Salut,
Romain PETIT a écrit :
Après mure réflexion, Daniel a écrit :
Salut,
Salut,
PROCEDURE apiSwapToVM()
PROCEDURE FREE_MEM()
Si tes services figent par accroissement, normalement devrait faire
l'affaire.
Je reste dubitatif.
Je vois ici et là que ce n'est qu'un cache misère et que le remede
risque d'être pire que le mal :
http://www.bitsum.com/winmemboost.asp
http://groups.google.fr/group/borland.public.cppbuilder.nativeapi/browse_frm/thread/656eae8ed23df311
En fait, il s'agit seulement de transférer sur le disque ce qui est
occupé par la RAM (un swap).
Ca ne regle pas le fait que l'appli en question libère mal la mémoire
consommée.
Pire ! Il semble que cela grignotte les performances et risque de
pertuber l'OS dans sa gestion de la RAM...
Un retour d'expérience dans le monde réel et sur le long terme serait le
bienvenu...
En attendant de pouvoir faire des tests plus poussés, je retourne à mon
ancienne stratégie (fermeture auto qutodienne des applis et relance par
XYNTService).
A+
C'est pour cela que que j'avais mis un avertissement et qu'on ne parlait
pas de fuite mémoire.
La fonction permet uniquement de libérer la RAM servant de cache à
l'application, ce qui fait qu'elle diminue les performances de
l'application, mais aide tout de même windows à libérer ce cache, que
Windows a parfois du mal à libérer.
@+
--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Si tes services figent par accroissement, normalement devrait faire l'affaire.
Je reste dubitatif. Je vois ici et là que ce n'est qu'un cache misère et que le remede risque d'être pire que le mal : http://www.bitsum.com/winmemboost.asp http://groups.google.fr/group/borland.public.cppbuilder.nativeapi/browse_frm/thread/656eae8ed23df311
En fait, il s'agit seulement de transférer sur le disque ce qui est occupé par la RAM (un swap). Ca ne regle pas le fait que l'appli en question libère mal la mémoire consommée. Pire ! Il semble que cela grignotte les performances et risque de pertuber l'OS dans sa gestion de la RAM...
Un retour d'expérience dans le monde réel et sur le long terme serait le bienvenu... En attendant de pouvoir faire des tests plus poussés, je retourne à mon ancienne stratégie (fermeture auto qutodienne des applis et relance par XYNTService).
A+
C'est pour cela que que j'avais mis un avertissement et qu'on ne parlait pas de fuite mémoire.
La fonction permet uniquement de libérer la RAM servant de cache à l'application, ce qui fait qu'elle diminue les performances de l'application, mais aide tout de même windows à libérer ce cache, que Windows a parfois du mal à libérer.
@+
-- suivre ce lien pour répondre: http://cerbermail.com/?2KrV3YZXnn Daniel ;-)