** java.lang.OutOfMemoryError: пространство кучи Java с использованием Spring 4, Hibernate 4, коннектора My Sql 8.1 и tomcat 8.5 ** при использовании ** My SQL 5.7.23 * - PullRequest
0 голосов
/ 17 февраля 2019

Вот подробности исключения: -

java.lang.OutOfMemoryError: Java heap space
        at com.mysql.jdbc.Buffer.<init>(Buffer.java:57)
        at com.mysql.jdbc.MysqlIO.nextRow(MysqlIO.java:2087)
        at com.mysql.jdbc.MysqlIO.readSingleRowSet(MysqlIO.java:3549)
        at com.mysql.jdbc.MysqlIO.getResultSet(MysqlIO.java:489)
        at com.mysql.jdbc.MysqlIO.readResultsForQueryOrUpdate(MysqlIO.java:3240)
        at com.mysql.jdbc.MysqlIO.readAllResults(MysqlIO.java:2411)
        at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2834)
        at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2838)
        at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2082)
        at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2212)
        at sun.reflect.GeneratedMethodAccessor99.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
        at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
        at com.sun.proxy.$Proxy168.executeQuery(Unknown Source)
        at org.hibernate.loader.Loader.getResultSet(Loader.java:1978)
        at org.hibernate.loader.Loader.doQuery(Loader.java:829)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
        at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259)
        at org.hibernate.loader.Loader.loadCollectionSubselect(Loader.java:2242)
        at org.hibernate.loader.collection.SubselectOneToManyLoader.initialize(SubselectOneToManyLoader.java:77)
        at org.hibernate.persister.collection.AbstractCollectionPersister.initialize(AbstractCollectionPersister.java:622)
        at org.hibernate.event.internal.DefaultInitializeCollectionEventListener.onInitializeCollection(DefaultInitializeCollectionEventListener.java:82)
        at org.hibernate.internal.SessionImpl.initializeCollection(SessionImpl.java:1606)
        at org.hibernate.collection.internal.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:379)
        at org.hibernate.collection.internal.AbstractPersistentCollection.read(AbstractPersistentCollection.java:112)
        at org.hibernate.collection.internal.AbstractPersistentCollection.readSize(AbstractPersistentCollection.java:137)
        at org.hibernate.collection.internal.PersistentBag.isEmpty(PersistentBag.java:249)
        at com.vms.business.SupplierSearchService.fetchTopFiveAssociatedSuppliersList(SupplierSearchService.java:369)
        at com.vms.business.SupplierSearchService$$FastClassBySpringCGLIB$$c4e470d2.invoke(<generated>)
        at org.springframework.cglib.proxy.Meth

odProxy.invoke (MethodProxy.java:204)

Вот запрос Hibernate, где я получаю исключение: - ** Примечание: - ** Тот же запрос работает хорошо, когда я использую My SQL 5.1 с теми же данными.Еще одна вещь, когда я использую My SQL 5.7.23 RDS соединение, все приложение работает медленно.Новая RDS имеет в 4 раза более высокую конфигурацию от службы 5.1 My SQL RDS, но все равно выдает ошибку.

Вот запрос: -

Session session = em.unwrap(Session.class);
Criteria criteria = session.createCriteria(Orgassociation.class, "orgassociation");
criteria.createAlias("orgassociation.organization", "associatedOrgs");

Criteria userCriteria = session.createCriteria(User.class, "user");
userCriteria.add(Restrictions.eq("user.userId", userId));
User user = (User) userCriteria.uniqueResult();
criteria.add(Restrictions.eq("orgassociation.organization1.organizationId",
user.getOrganization().getOrganizationId()));
criteria.add(Restrictions.eq("associatedOrgs.orgType", VMS_CONSTANTS.DB_CONSTANTS.EMPLOYER_AND_SUPPLIER));
criteria.addOrder(Order.desc("orgassociation.orgAssociationId"));
criteria.setMaxResults(5);

@SuppressWarnings("unchecked")
List<Orgassociation> orgList = criteria.list();

1 Ответ

0 голосов
/ 20 февраля 2019

Вам нужно будет подключить профилировщик Java (VisualVM) или ваш набор и проанализировать вашу кучу, чтобы узнать, какие объекты на самом деле вызывают это.Весьма вероятно, что какой-то клиентский SDK-контракт нарушен, в результате чего множество Java-объектов лежат без GC.

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