Je cherche a connaitre le plus précisément possible l'occupation mémoire
d'une instance de classe ayant des membres du type std::vector< std::stringet aussi std::map< std::string, std::string >.
Je cherche a connaitre le plus précisément possible l'occupation mémoire
d'une instance de classe ayant des membres du type std::vector< std::string
et aussi std::map< std::string, std::string >.
Je cherche a connaitre le plus précisément possible l'occupation mémoire
d'une instance de classe ayant des membres du type std::vector< std::stringet aussi std::map< std::string, std::string >.
Pourquoi veux-tu savoir ça, au fait ?
Pourquoi veux-tu savoir ça, au fait ?
Pourquoi veux-tu savoir ça, au fait ?
Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul donné,
et déclencher une alerte passé un seuil.
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul donné,
et déclencher une alerte passé un seuil.
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul donné,
et déclencher une alerte passé un seuil.
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
In article <41d90652$0$9355$, Amerio wrote:Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent
que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul
donné,
et déclencher une alerte passé un seuil.
Est-ce que l'OS est spécifié ou pas ?
Parce que "occupation mémoire", en fonction des OS, ça a
un sens très différent. Par exemple, l'OS peut décider de
ne pas libérer pour les autres processus une mémoire pourtant
libéréee (delete) par le code C++.
De même, avec la fragmentation et autres joyeusetées, la somme
des allocations (même connue) est inférieure à ce que le processus
utilise réellement.
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
In article <41d90652$0$9355$636a15ce@news.free.fr>, Amerio wrote:
Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent
que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul
donné,
et déclencher une alerte passé un seuil.
Est-ce que l'OS est spécifié ou pas ?
Parce que "occupation mémoire", en fonction des OS, ça a
un sens très différent. Par exemple, l'OS peut décider de
ne pas libérer pour les autres processus une mémoire pourtant
libéréee (delete) par le code C++.
De même, avec la fragmentation et autres joyeusetées, la somme
des allocations (même connue) est inférieure à ce que le processus
utilise réellement.
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
In article <41d90652$0$9355$, Amerio wrote:Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent
que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul
donné,
et déclencher une alerte passé un seuil.
Est-ce que l'OS est spécifié ou pas ?
Parce que "occupation mémoire", en fonction des OS, ça a
un sens très différent. Par exemple, l'OS peut décider de
ne pas libérer pour les autres processus une mémoire pourtant
libéréee (delete) par le code C++.
De même, avec la fragmentation et autres joyeusetées, la somme
des allocations (même connue) est inférieure à ce que le processus
utilise réellement.
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Est-ce que l'OS est spécifié ou pas ?
Parce que "occupation mémoire", en fonction des OS, ça a
un sens très différent. Par exemple, l'OS peut décider de
ne pas libérer pour les autres processus une mémoire pourtant
libéréee (delete) par le code C++.
L'OS est un Linux embarqué sur un Intel Pentium.
Rien de tres folklorique, donc.
De même, avec la fragmentation et autres joyeusetées, la somme
des allocations (même connue) est inférieure à ce que le processus
utilise réellement.
Oui, mais on n'est pas "juste juste" en mémoire (on a de la marge, donc la
fragmentation ne joue pas trop). Par contre, on souhaite qd même se donner
une limite...
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
jene souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Une autre idée ? (non, autre que new/delete... merci ;->)
(surcharge de new ? allocator maison ?)
Est-ce que l'OS est spécifié ou pas ?
Parce que "occupation mémoire", en fonction des OS, ça a
un sens très différent. Par exemple, l'OS peut décider de
ne pas libérer pour les autres processus une mémoire pourtant
libéréee (delete) par le code C++.
L'OS est un Linux embarqué sur un Intel Pentium.
Rien de tres folklorique, donc.
De même, avec la fragmentation et autres joyeusetées, la somme
des allocations (même connue) est inférieure à ce que le processus
utilise réellement.
Oui, mais on n'est pas "juste juste" en mémoire (on a de la marge, donc la
fragmentation ne joue pas trop). Par contre, on souhaite qd même se donner
une limite...
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Une autre idée ? (non, autre que new/delete... merci ;->)
(surcharge de new ? allocator maison ?)
Est-ce que l'OS est spécifié ou pas ?
Parce que "occupation mémoire", en fonction des OS, ça a
un sens très différent. Par exemple, l'OS peut décider de
ne pas libérer pour les autres processus une mémoire pourtant
libéréee (delete) par le code C++.
L'OS est un Linux embarqué sur un Intel Pentium.
Rien de tres folklorique, donc.
De même, avec la fragmentation et autres joyeusetées, la somme
des allocations (même connue) est inférieure à ce que le processus
utilise réellement.
Oui, mais on n'est pas "juste juste" en mémoire (on a de la marge, donc la
fragmentation ne joue pas trop). Par contre, on souhaite qd même se donner
une limite...
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
jene souhaite pas mal évalué l'occupation. (au passage, toutes les chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Une autre idée ? (non, autre que new/delete... merci ;->)
(surcharge de new ? allocator maison ?)
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top", qui
arrive à voir des infos sur la taille des processus. Il doit
bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque processus
un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top", qui
arrive à voir des infos sur la taille des processus. Il doit
bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque processus
un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top", qui
arrive à voir des infos sur la taille des processus. Il doit
bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque processus
un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top", qui
arrive à voir des infos sur la taille des processus. Il doit
bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque processus
un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation complète du
process, mais juste l'occupation en mémoire des instances d'UNE classe parmi
d'autres.
Je surveille une classe avec un certain seuil, une autre avec un autre
seuil, etc...
Mon problème est que par ex, std::string prealloue 15 octets pour les
petites chaines, mais si j'ai une chaine qui en fait 16, il va occuper
réellement 15+16 ! L'erreur n'est pas mince....
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top", qui
arrive à voir des infos sur la taille des processus. Il doit
bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque processus
un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation complète du
process, mais juste l'occupation en mémoire des instances d'UNE classe parmi
d'autres.
Je surveille une classe avec un certain seuil, une autre avec un autre
seuil, etc...
Mon problème est que par ex, std::string prealloue 15 octets pour les
petites chaines, mais si j'ai une chaine qui en fait 16, il va occuper
réellement 15+16 ! L'erreur n'est pas mince....
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top", qui
arrive à voir des infos sur la taille des processus. Il doit
bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque processus
un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation complète du
process, mais juste l'occupation en mémoire des instances d'UNE classe parmi
d'autres.
Je surveille une classe avec un certain seuil, une autre avec un autre
seuil, etc...
Mon problème est que par ex, std::string prealloue 15 octets pour les
petites chaines, mais si j'ai une chaine qui en fait 16, il va occuper
réellement 15+16 ! L'erreur n'est pas mince....
"Marc Boyer" a écrit dans le
message
de news:crb1ks$45k$In article <41d90652$0$9355$, Amerio wrote:Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent
quel'on doit garantir un taux d'occupation mémoire inférieur à un seul
donné,et déclencher une alerte passé un seuil.
...
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
jene souhaite pas mal évalué l'occupation. (au passage, toutes les
chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Une autre idée ? (non, autre que new/delete... merci ;->)
(surcharge de new ? allocator maison ?)
"Marc Boyer" <Marc.Boyer@enseeiht.yahoo.fr.invalid> a écrit dans le
message
de news:crb1ks$45k$2@news.cict.fr...
In article <41d90652$0$9355$636a15ce@news.free.fr>, Amerio wrote:
Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent
que
l'on doit garantir un taux d'occupation mémoire inférieur à un seul
donné,
et déclencher une alerte passé un seuil.
...
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
je
ne souhaite pas mal évalué l'occupation. (au passage, toutes les
chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Une autre idée ? (non, autre que new/delete... merci ;->)
(surcharge de new ? allocator maison ?)
"Marc Boyer" a écrit dans le
message
de news:crb1ks$45k$In article <41d90652$0$9355$, Amerio wrote:Pourquoi veux-tu savoir ça, au fait ?
Parce que les spécifications du soft sur lequel je travaille précisent
quel'on doit garantir un taux d'occupation mémoire inférieur à un seul
donné,et déclencher une alerte passé un seuil.
...
Si j'ai 10000 instance de cette classe, chacune ayant un
std::map<std::string, std::string>, et que je dois garantir une taux
d'occupation inférieur à 2Mo pour toutes ces instances, on comprend que
jene souhaite pas mal évalué l'occupation. (au passage, toutes les
chaines
sont uniques, donc pas de partage entre chaines).
Si je ne peux avoir aucune garanti, la STL n'est peut etre pas la bonne
solution alors. D'autres idées ?
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Une autre idée ? (non, autre que new/delete... merci ;->)
(surcharge de new ? allocator maison ?)
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation complète du
process, mais juste l'occupation en mémoire des instances d'UNE
classe parmi d'autres.
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation complète du
process, mais juste l'occupation en mémoire des instances d'UNE
classe parmi d'autres.
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation complète du
process, mais juste l'occupation en mémoire des instances d'UNE
classe parmi d'autres.
Amerio wrote:L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top",
qui arrive à voir des infos sur la taille des processus. Il
doit bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque
processus un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation
complète du process, mais juste l'occupation en mémoire des
instances d'UNE classe parmi d'autres.
OK, j'avais pas compris ça.Je surveille une classe avec un certain seuil, une autre
avec un autre seuil, etc... Mon problème est que par ex,
std::string prealloue 15 octets pour les petites chaines,
mais si j'ai une chaine qui en fait 16, il va occuper
réellement 15+16 ! L'erreur n'est pas mince....
Je ne comprends pas d'où viens ce 21, mais bon.
Donc, tu dois surveiller quelque chose qui dépend de
l'implémentation. Alors oui, en effet, la seule piste que je
vois avec la STL, c'est d'écrire ton propre allocateur, qui
compte les allocations/désalocation, et de le passer en
paramètre template de tous les objets de la STL que tu
utilises ( string, map, etc).
Amerio wrote:
L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top",
qui arrive à voir des infos sur la taille des processus. Il
doit bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque
processus un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation
complète du process, mais juste l'occupation en mémoire des
instances d'UNE classe parmi d'autres.
OK, j'avais pas compris ça.
Je surveille une classe avec un certain seuil, une autre
avec un autre seuil, etc... Mon problème est que par ex,
std::string prealloue 15 octets pour les petites chaines,
mais si j'ai une chaine qui en fait 16, il va occuper
réellement 15+16 ! L'erreur n'est pas mince....
Je ne comprends pas d'où viens ce 21, mais bon.
Donc, tu dois surveiller quelque chose qui dépend de
l'implémentation. Alors oui, en effet, la seule piste que je
vois avec la STL, c'est d'écrire ton propre allocateur, qui
compte les allocations/désalocation, et de le passer en
paramètre template de tous les objets de la STL que tu
utilises ( string, map, etc).
Amerio wrote:L'API de l'OS.
Faire du malloc/free... hummm... hem....
Non, voir l'API de Linux. Sur Linux, il existe "top",
qui arrive à voir des infos sur la taille des processus. Il
doit bien lire les infos quelque part.
Tiens, il existe un repertoire /proc avec pour chaque
processus un fichier stat et un statm.
Si t'a pas ton bonheur là dedans..
Non, ca ne va pas. Je ne souhaite pas avoir l'occupation
complète du process, mais juste l'occupation en mémoire des
instances d'UNE classe parmi d'autres.
OK, j'avais pas compris ça.Je surveille une classe avec un certain seuil, une autre
avec un autre seuil, etc... Mon problème est que par ex,
std::string prealloue 15 octets pour les petites chaines,
mais si j'ai une chaine qui en fait 16, il va occuper
réellement 15+16 ! L'erreur n'est pas mince....
Je ne comprends pas d'où viens ce 21, mais bon.
Donc, tu dois surveiller quelque chose qui dépend de
l'implémentation. Alors oui, en effet, la seule piste que je
vois avec la STL, c'est d'écrire ton propre allocateur, qui
compte les allocations/désalocation, et de le passer en
paramètre template de tous les objets de la STL que tu
utilises ( string, map, etc).