Утечка памяти, связанная с Slick - PullRequest
1 голос
/ 25 сентября 2019

У меня есть утечка памяти в моем приложении, и я считаю, что это связано с моим подключением к базе данных.Я использую 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)
}

Я также пытался использовать или не использовать пользовательский исполнитель, но ничего не изменилось

Кто-нибудь знает, где эта памятьутечка может прийти?Спасибо.

[Редактировать] Я должен уточнить, что этот класс создается только один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...