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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?