Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyciek pamięci w JDBC4Connection

Duffymo prawie na pewno ma rację. W przeszłości, kiedy mieliśmy wycieki pamięci, praktycznie ZAWSZE jest to sterownik MySQL JDBC. Po prostu zapomniałem zamknąć gdzieś jeden mały zestaw wyników lub połączenie lub oświadczenie. Skończyło się na kontrolowaniu całej bazy kodu za każdym razem, gdy używaliśmy ich do znalezienia problemu i upewnienia się, że zostaną zamknięte.

Jeśli chodzi o HashMap, też to widziałem. Nie zajrzałem do źródła, ale odniosłem wrażenie, że sterownik MySQL przechowywał wiersze (przynajmniej wartości wierszy) w HashMaps wewnętrznie.

Wyciekanie zestawów wyników jest niestety łatwe. Pomysł, że te zamykalne zasoby, które same się tym zajmują, pojawiają się w JDK 7 lub 8, naprawdę przemawia do mnie z tego powodu.

Możesz wstawić gdzieś klasę podkładki (powiedzmy dla połączenia), aby rejestrować każdy otwarty/zamknięty zasób, aby sprawdzić, czy możesz wykryć, gdzie jest wyciek, bez bezpośredniego czytania całego źródła.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Przechowywanie wiodących zer liczb całkowitych w bazie danych MySQL jako INTEGER

  2. Wstaw tabelę MySql, jeśli nie istnieje, w przeciwnym razie zaktualizuj

  3. Czy istnieje możliwość słuchania na stole/polu sql z wielbłądem?

  4. Mysql :sortowanie losowe niż sortowanie według określonej kolumny

  5. Jak zwiększyć pole w MySql przy użyciu ON DUPLICATE KEY UPDATE podczas wstawiania wielu wierszy?