2013-12-06 5 views
2

Я получаю это исключение при попытке создать SQL-запрос. Я пытаюсь использовать сессию в методе run() потока.org.hibernate.HibernateException: не удалось получить соединение

Hibernate exception org.hibernate.HibernateException: Not able to obtain connection 
at org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:113) 
at org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher.java:88) 
at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1162) 
at org.hibernate.loader.Loader.doQuery(Loader.java:390) 
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:218) 
at org.hibernate.loader.Loader.doList(Loader.java:1593) 
at org.hibernate.loader.Loader.list(Loader.java:1577) 
at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:112) 
at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1414) 
at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:153) 
+3

Как вы знаете, что это все еще в памяти? –

+4

Предполагая, что все еще в памяти, вы аннулировали или удалили все ссылки на объект? – Pandacoder

+0

Поскольку я занимаю память в диспетчере задач –

ответ

5

Ручное управление памятью недоступно на Java. Объект автоматически получит право на переработку, когда он выходит за рамки. Что удерживает ваш объект? Должен быть класс или другой объект, ссылающийся на него, чтобы он не был переработан GC.

+2

Точнее, объект * может * быть переработан, но нет никакой гарантии, что он это сделает. –

+1

Истинный - возможно, я должен сказать, что он автоматически становится пригодным для сбора мусора ... – Fallso

+0

также considere разыменование, он может значительно увеличить скорость сборщика мусора, и это общая хорошая оценка. – Kiwy

1

Основной концепцией Java является то, что у вас нет контроля (что также означает, что вам не все равно), когда объекты удаляются из ОЗУ. Как правило, Garbace-Collector собирает объект, на который больше ничего не ссылается. Однако, когда это происходит, это не совсем точно.

Итак, вкратце: вы не можете этого сделать. Объекты, которые остаются в ОЗУ, все еще ссылаются на что-то.

+1

Было бы неплохо, если бы downvoter оставил комментарий, чтобы дать мне шанс улучшить себя в будущем :-) – LionC

-1

В Java объект будет shortlisted для сбора мусора, когда больше невозможно связаться с какой-либо активной ссылкой.

Вы можете облегчить это путем присвоения его ссылки на нуль:

obectRef = null; 

Но это не гарантия того, что он на самом деле будет удален.

0

Я хотел бы обратиться к этой статье: When does System.gc() do anything

Вы на самом деле можно попробовать и вызвать сборщик мусора, но Java упрямое животное и будет на самом деле только собирать мусор, когда он чувствует, что мусор необходимо собирать.

Смежные вопросы