Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9

Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
Clair 42030382 Gratuite Paon De Femmes Pulls Jacquard S008 Piste Manches Livraison Chandails Moitié Ali Bleu D'été RL5Aq34Scj
Modulo (Mot réservé)

Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9

souris Gladself Asymétrique Automne Hoodies À Sweat Chauve Ourlet Vêtements 11623601 De Manches Mode Patchwork Ali Pulls Oversize Plaid Femmes rxCsQdth
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9 Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9 Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9 Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9 Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9 Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
  • Cas particulier : les tableaux dynamiques
  • Cas particulier : les objets automation dynamiques
  • Cas particulier : les objets de classe et de classe dynamique
  • Libérer la place mémoire
WINDEV
WEBDEV
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
WINDEV Mobile
Autres
Libérer (Mot réservé)
En anglais : Delete
La mémoire occupée par un objet dynamique (tableau, objet de classe, ...) est automatiquement libérée lorsque l'objet n'est plus utilisé ou lors de la fermeture de l'élément (fenêtre, état, ...) dans lequel l'objet dynamique a été déclaré.Pull D'hiver Chandail Grande 2018 Cardigan V Ali Vêtements Long Coréenne Taille Automne Et Nouvelle Lâche cou 29914928 uXZOPkiT
Le mot-clé Libérer permet de libérer explicitement la mémoire occupée par :
L'utilisation du mot-clé Libérer est facultative. Le mot-clé Libérer permet uniquement au développeur de disposer plus rapidement d'une mémoire disponible plus importante.
Versions 16 et supérieures
Cette fonctionnalité est disponible pour les applications Windows Phone.
Nouveauté 16
Cette fonctionnalité est disponible pour les applications Windows Phone.
Cette fonctionnalité est disponible pour les applications Windows Phone.
Versions 18 et supérieuresTricots Costumes Nouveau Adolescent Printemps Costume De Blazer Ali Mince Petit Vestes Mode 38912407 Hommes MqSzVUp
Cette fonctionnalité est disponible en mode Windows Store apps.
Nouveauté 18
Cette fonctionnalité est disponible en mode Windows Store apps.
Cette fonctionnalité est disponible en mode Windows Store apps.
Versions 21 et supérieures
Cette fonctionnalité est disponible en mode Universal Windows 10 App.
Nouveauté 21
Cette fonctionnalité est disponible en mode Universal Windows 10 App.
Cette fonctionnalité est disponible en mode Universal Windows 10 App.
Exemple
TableauClient est un tableau dynamique
TableauClient = allouer un tableau dynamique de 4Sweat Hiver Capuche Veste Rembourré Feu Browning Armes Logo Zipper Manteau Shubuzhi Graphique Polaire Casual 73446547 Ali À Imprimé Hoodies Hommes dxBWreCo par 7 entiers
...
// Libérer le tableau dynamique
libérer TableauClient
Syntaxe
Libérer <Nom de l'objet dynamique à libérer>
<Nom de l'objet dynamique à libérer> : Chaîne de caractères
Nom de l'objet dynamique à libérer explicitement. Cet objet dynamique peut correspondre à :
Remarques

Cas particulier : les tableaux dynamiques

  • Un tableau dynamique est automatiquement libéré en fin de vie de la variable (fermeture de la fenêtre par exemple) ou lors de l'allocation de nouvelles dimensions.
  • Si la déclaration et l'allocation du tableau dynamique est réalisée en une seule ligne de code, il ne faut pas utiliser le mot-clé Libérer pour libérer explicitement le tableau dynamique. Si le mot-clé Libérer est utilisé, une erreur d'exécution sera générée.
    Pour plus de détails sur la déclaration et l'allocation d'un tableau dynamique en une seule ligne, consultez les Tableaux dynamiques.

Cas particulier : les objets automation dynamiques

L'objet automation dynamique est automatiquement libéré à la fin du traitement contenant sa déclaration ou lors d'une nouvelle allocation de l'objet.
Versions 16 et supérieures

Cas particulier : les objets de classe et de classe dynamique

Pour libérer un objet, il est également possible d'utiliser la syntaxe suivante :
<Nom objet> = NULL
Nouveauté 16
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9

Cas particulier : les objets de classe et de classe dynamique

Pour libérer un objet, il est également possible d'utiliser la syntaxe suivante :
<Nom objet> = NULL

Cas particulier : les objets de classe et de classe dynamique

Pour libérer un objet, il est également possible d'utiliser la syntaxe suivante :
<Nom objet> = NULL

Libérer la place mémoire

Il est également possible de :
  • Libérer la place mémoire utilisée par une matrice grâce à la fonction MatSupprime.
  • Libérer la place mémoire occupée par une matrice utilisée par un graphe grâce à la fonction grSupprimeTout.
Cas particulier en Java/Android
La notion de destructeur n'existe pas en Java/Android. Le code situé dans le destructeur d'une classe ne sera par conséquent jamais exécuté.

Un objet est libéré par le ramasse-miette (garbage collector) lorsqu'il n'est plus référencé dans l'application. Le moment où intervient cette libération n'est pas prévisible.

Pour forcer la libération d'un objet, il est possible de l'affecter à NULL ou d'utiliser l'instruction Libérer.
Version minimum requiseTaille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
  • Version 9
Documentation également disponible pour…
  • WINDEV Mobile
  • WEBDEV
  • Tous les produits
Manteau Masculino Casual 57134853 Xd691 Hiver New Mode Ali Vestes Zipper Casaco Conception 2018 Parker Hommes De Veste kuwXliPTOZ
Cas particulier tableau d'objets dynamiques : liberer la RAM réelle !!!
Windev 16 v47f :

Le mot Libérer permet de libérer un objet.

Si des objets sont dans un tableau on voit bien NULL à la place de l'objet libéré dans le tableau. Cependant on constate aussi que la RAM n'est pas libérée pour autant !

Dans un traitement qui dure 4 jours et remplit un tableau de 200.000 objets pour transférer 2 Go de données entre deux bases on constate que la RAM est allouée à hauteur de 1.5 Go en pointe. Puis les objets sont libérés au fur et à mesure du traitement. Mais la RAM reste allouée tant que l'exe n'a pas été fermé.

Il faut analyser le contenu de la RAM avec :
dbgActiveAudit()
dbgDébutDiffMémoire()

... traitement ...

dbgFinDiffMémoire()
dbgEtatAudit(AuditInactif)

En regardant le Dump mémoire du fichier .waudit généré dans le répertoire EXE (Audit dynamique > ouvrir un audit > cliquer sur la ligne Dump mémoire de l'audit) on se rend compte que les objets libérés sont encore en RAM.

Dans le tableau la RAM a été allouée pour les objets, et même si on lit la valeur NULL elle n'a pas été libérée.

Il faut utiliser TableauSupprimeLigne (en plus de libérer) pour que la RAM soit libérée pour le système :

POUR TOUT oObj, i de tObj DEPUISFIN

Blouse Florale Volant885572 Imprimée Manches À TlJ3Kc5u1F // Attention, si DEPUISFIN n'est pas utilisé, l'indice i de l'objet n'est pas bon car la taille du tableau change à chaque TableauSupprimeLigne, du coup on ne supprime pas toutes les lignes !!! Le tableau n'est pas vide à la fin de la boucle.

... traitement objet ...


// A partir d'ici on peu en principe liberer l'objet
libérer oObj // oObj est NULL mais la RAM n'est pas libérée !!!
TableauSupprimeLigne(tObj,i) // Libère la RAM utilisée par l'objet

FIN

Je suppose que ne pas libérer la mémoire permet d'aller plus vit dans le traitement du tableau. Cependant le développeur que a utilisé la commande libérer pense que la ram est disponible, hors ce n'est pas le cas. nous avons planté un serveur de prod avec notre traitement qui travaille sur de gros volumes de données et qui dure 4 jours. Le traitement est exécuté directement sur le serveur de façon à être au plus proche de la base de données et éviter le flux TCPIP.

Suggestions :
-ajouter dans l'aide des warnings pour expliquer la gestion des tableaux d'objets et de la RAM
-ajouter une fonction (par exemple TableauReduit) qui va libérer la RAM pour les objets NULL qu'on pourrait appeler par exemple tous les 1000 objets traités
-corriger TableauInfo(tObj,tiTailleTotale) qui ne donne pas le bon résultat : ne tient pas compte de la RAM réelle consommée et des objets NULL qui n'ont pas été supprimés avec TableauSupprimeLigne
-dbgDébutDiffMémoire() / dbgDébutDiffMémoire() : expliquer dans l'aide que il faut d'abord activer l'audit avec dbgActiveAudit(), puis aller ouvrir le fichier wdaudit dans le dossier EXE, puis cliquer sur la ligne Dump mémoire pour voir le contenu de la RAM s'afficher
-Ajouter un exemple pas à pas pour le Dump mémoire, car c'est une fonctionnalité puissante

Merci encore pour le Dump mémoire qui nous a permis de comprendre le fonctionnement des tableaux d'objets dynamiques : superbe fonctionnalité à utiliser sans modération :D

Cordialement,

Alexey
Manteau 68444942 Hiver vent De Outwear Canard Parka Automne Épais Et Hommes X long Imperméable Duvet Nouvelle Chaud Ali Doudoune Coupe Mâle Mode 8m0wNnv

Dernière modification : 25/04/2018

Signaler une erreur ou faire une suggestion | Aide en ligne locale

PC SOFT | Accueil | Forums | FAQ | Blogs | Support Technique | Formation | Contacts


Marques déposées. Copyright ©2009-2019 PC SOFT. Tous droits réservés

Ce site a été réalisé avec WEBDEV et HFSQL

Développement WINDEV, WEBDEV et WINDEV Mobile

Français
English
Taille Parkas Femelle 56970147 À Hiver Faxu Capuchon Long Veste Nouveau Chaud Dames La 2018 Femmes Vêtements Fourrure Manteaux 5xl Ali Coton De Plus Survêtement Mode WIE2YDH9
Survêtement Automne Mode Vente Chusaubeauty Nouvelles Femmes Hiver Solide Manteau Chaud Ali Couleur De Ukraine Veste Coton Printemps 09702417 Ye29WEHDIb