[OCILIB] [OCI] Fuite mémoire obscure
Bonjour,
j'écris un module d'accès à oracle pour une application, et ai des fuites de mémoire à chaque accès qui est fait à Oracle, j'accède à une 11g via Ocilib (j'ai intégré le source d'ocilib pour écarter tout doute à ce niveau).
Premier point, j'ai des fuites lors OCI_ConnectionAttach, mais un collègue m'a indiqué que cette fuite est incontournable. Comme elle n'apparait qu'au début, je l'ignore.
Par contre, à chaque appel, j'ai ceci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| [W] MLK: Memory leak of 20 bytes from 1 block allocated in sscoresetserverflag [OraOCIEI11.dll]
Distribution of leaked blocks
Allocation location
HeapAlloc [C:\WINDOWS\system32\KERNEL32.dll]
sscoresetserverflag [PATH_TO_BIN\OraOCIEI11.dll]
slzgetevar [PATH_TO_BIN\OraOCIEI11.dll]
ociepgoe [PATH_TO_BIN\OraOCIEI11.dll]
surr_raw_dbgrmmd [PATH_TO_BIN\OraOCIEI11.dll]
CsrNewThread [C:\WINDOWS\system32\ntdll.dll]
RtlUnicodeStringToInteger [C:\WINDOWS\system32\ntdll.dll]
KiUserApcDispatcher [C:\WINDOWS\system32\ntdll.dll]
[W] MLK: Memory leak of 12 bytes from 1 block allocated in ss_mem_thread_attach [OraOCIEI11.dll]
Distribution of leaked blocks
Allocation location
HeapAlloc [C:\WINDOWS\system32\KERNEL32.dll]
ss_mem_thread_attach [PATH_TO_BIN\OraOCIEI11.dll]
sscoresetserverflag [PATH_TO_BIN\OraOCIEI11.dll]
slzgetevar [PATH_TO_BIN\OraOCIEI11.dll]
ociepgoe [PATH_TO_BIN\OraOCIEI11.dll]
surr_raw_dbgrmmd [PATH_TO_BIN\OraOCIEI11.dll]
CsrNewThread [C:\WINDOWS\system32\ntdll.dll]
RtlUnicodeStringToInteger [C:\WINDOWS\system32\ntdll.dll]
KiUserApcDispatcher [C:\WINDOWS\system32\ntdll.dll] |
Cette fuite m'ennuie beaucoup plus, car vu le nombre d'appel que fait mon application, et le fait que l'appli tourne en production 24/7, la mémoire risque de manquer. Mon programme prend 4 à 16ko tous les 4 à 10 "select".
J'ai également essayé avec une 10g, c'est pareil. J'avais auparavant fait mes tests en 9i, c'était pire, mon éxécutable prenait 1 mega par minute!
Pour info, j'ai essayé avec un client oracle installé, et avec l'instant client, même punition. :(
Pour la log ci dessus, c'est de l'instant client 11g, dll copié dans le repertoire de mon install.
est il normal qu'il créé autant de threads ?