sql >> Database teknologi >  >> RDS >> Mysql

Hukommelseslækage i JDBC4Connection

Duffymo har næsten helt sikkert ret. Tidligere, hvor vi har haft hukommelseslækager, er det praktisk talt ALTID MySQL JDBC-driveren. Bare glemmer at lukke et lille ResultSet eller Connection eller Statement et eller andet sted. Jeg endte med at revidere hele kodebasen for hver gang, vi brugte dem til at finde problemet og sikre, at de bliver lukket.

Hvad angår HashMap, har jeg også set det. Jeg har ikke kigget på kilden, men mit indtryk var, at MySQL-driveren lagrede rækkerne (i det mindste rækkeværdier) i HashMaps internt.

Det er desværre nemt at lække ResultSets. Ideen om, at de ressourcer, der kan lukkes, der selv tager sig af dette, kommer i JDK 7 eller 8, tiltaler mig virkelig af denne grund.

Du kan indsætte en shim-klasse et eller andet sted (f.eks. for forbindelse) for at logge hver åbnet/lukket ressource for at se, om du kan fange, hvor lækagen er uden direkte at læse hele din kilde.



  1. 11 Almindelige SQL-sætninger med grundlæggende eksempler

  2. Laravel 5.5 Konsolider migrationer med produktionsdatabase

  3. Bedste tilgang til at fjerne tid en del af datetime i SQL Server

  4. Vælg række med seneste dato pr. bruger