Mysql
 sql >> база данни >  >> RDS >> Mysql

Изтичане на памет в JDBC4Connection

Дъфимо почти сигурно е прав. В миналото, когато сме имали течове на памет, това практически ВИНАГИ е драйверът на MySQL JDBC. Просто забравих да затвориш един малък ResultSet или връзка или изявление някъде. В крайна сметка проверявах цялата кодова база всеки път, когато ги използвахме, за да открием проблема и да гарантираме, че ще бъдат затворени.

Що се отнася до HashMap, аз също съм виждал това. Не съм гледал източника, но впечатлението ми беше, че MySQL драйверът съхранява редовете (поне стойностите на редове) в HashMaps вътрешно.

Изтичането на ResultSets за съжаление е лесно. Идеята за тези затварящи се ресурси, които сами се грижат за това, идващи в JDK 7 или 8, наистина ме привлича поради тази причина.

Бихте могли да вмъкнете някъде shim клас (да речем за Connection), за да регистрирате всеки отворен/затворен ресурс, за да видите дали можете да уловите къде е течът, без директно да четете целия си източник.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да разберете потребителското име и паролата за mysql база данни

  2. Качване на множество файлове на сървър, като php не качва на сървъра всички файлове

  3. MySQL избира записи за дубликати, използвайки множество колони

  4. неинициализирана константа MysqlCompat::MysqlRes (с помощта на mms2r gem)

  5. Искам да заредя изображение от базата данни в кутия за картина, използвайки LoadAsync и MemoryStream