У меня есть утечка памяти в моем приложении, и я считаю, что это связано с моим подключением к базе данных.Я использую Scala 2.12.8 и Slick 3.3.2.
Я сбросил память JVM и попытался проанализировать ее.У меня много java.lang.ref.Finalizer
с внутренними объектами, связанными с SSL, с URL моей базы данных MySQL.
Снимок экрана финализатора в анализе дампа памяти
Этокажется, что я что-то не так сделал с подключением базы данных.
class SlickDbContext extends DbContext {
private val logger = LoggerFactory.getLogger("SlickDbContext")
private val minDbThreads = 10
private val maxDbThreads = 10
private val maxDbConnexions = 100
logger.info("Initializing Db Context")
private val conf = ConfigFactory.load()
private val db = Database.forURL(
url = conf.getString("db.url"),
user = conf.getString("db.user"),
password = conf.getDecryptedString("db.password"),
driver = conf.getString("db.driver"),
executor = AsyncExecutor("dbExecutor", minDbThreads, maxDbThreads, maxDbConnexions))
db.createSession()
def query[T](queryFunc: DbAction[T]): Future[T] = db.run(queryFunc)
def transact[T](queryFunc: DbAction[T]): Future[T] = db.run(queryFunc.transactionally)
}
Я также пытался использовать или не использовать пользовательский исполнитель, но ничего не изменилось
Кто-нибудь знает, где эта памятьутечка может прийти?Спасибо.
[Редактировать] Я должен уточнить, что этот класс создается только один раз