Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Rò rỉ bộ nhớ trong JDBC4Connection

Duffymo gần như chắc chắn đúng. Trong quá khứ, khi chúng ta đã bị rò rỉ bộ nhớ, nó thực tế LUÔN LUÔN trình điều khiển MySQL JDBC. Chỉ cần quên đóng một ít ResultSet hoặc Connection hoặc Statement ở đâu đó. Tôi đã kết thúc việc kiểm tra toàn bộ cơ sở mã cho mỗi lần chúng tôi sử dụng những cơ sở đó để tìm ra vấn đề và đảm bảo chúng được đóng.

Đối với HashMap, tôi cũng đã thấy điều đó. Tôi chưa xem mã nguồn nhưng ấn tượng của tôi là trình điều khiển MySQL đã lưu trữ các hàng (ít nhất là giá trị hàng) trong HashMaps nội bộ.

Rò rỉ kết quả rất dễ dàng. Ý tưởng về những tài nguyên có thể đóng được tự xử lý việc này trong JDK 7 hoặc 8 thực sự hấp dẫn tôi vì lý do này.

Bạn có thể chèn một lớp shim ở đâu đó (ví dụ như đối với Kết nối) để ghi nhật ký từng tài nguyên đã mở / đóng để xem liệu bạn có thể phát hiện được vị trí rò rỉ mà không cần đọc trực tiếp tất cả nguồn của bạn hay không.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng mysql_real_escape_string để ngăn SQL Injection ở đâu?

  2. tách tên khỏi email trong mysql mà không có php có được không?

  3. Kiểm tra bảng xem có trùng thời gian không?

  4. Khởi tạo PHP PDO không thành công do cổng đôi - Không có PDOException:SQLSTATE [HY000] [2002]

  5. org.h2.jdbc.JdbcSQLException:Không tìm thấy ID cột