Исключение OutofMemory, возникающее с OpenJPA

Я получаю сообщение об ошибке нехватки памяти, когда пытаюсь вернуть огромное дерево объектов с помощью openJPA... что я могу сделать, чтобы облегчить это... Вот немного моей методологии...

Я ищу объект... Этот объект должен иметь связанные с ним дочерние объекты (которые, по сути, являются одним и тем же объектом)... Поэтому я включаю в него список дочерних элементов...

private List<Organization> childOrgsTree = new ArrayList<Organization>();

Таким образом, объект представляет собой организацию, и я включаю список организаций с этим объектом... Теперь у меня есть именованный собственный запрос, который получает каждого дочернего элемента этого конкретного объекта. Я рекурсивно перебираю каждого из этих дочерних элементов и нахожу каждого дочернего элемента этой сущности... Выполнение одного и того же именованного собственного вызова запроса, вероятно, тысячи раз. Рекурсивное построение дочерних объектов дерева. Теперь это, кажется, работает, пока я не столкнусь с исключением из памяти ... Я немного сбит с толку, как я могу обойти эту небольшую проблему? Я, очевидно, мог бы просто увеличить память, выделенную для процесса, но боюсь, что это было бы перевязкой. Любые идеи?


person SoftwareSavant    schedule 03.07.2012    source источник


Ответы (1)


Я немного в замешательстве, как мне обойти эту маленькую проблему?

У вас есть два варианта: оставить меньше памяти в коде приложения или увеличить размер кучи JVM.

person Rick    schedule 03.07.2012
comment
Хммм... Возможно, я смотрел эту ссылку openjpa.apache.org/builds/1.0.3/apache-openjpa-1.0.3/docs/ И openjpa.apache.org/builds/1.0.4/apache-openjpa-1.0.4/docs / Я надеюсь, что один из них даст мне ответ, который я ищу - person SoftwareSavant; 03.07.2012
comment
Я понятия не имею, как не знаю, как руководство пользователя OpenJPA решит проблему, связанную с тем, что вы загружаете слишком много данных в JVM? - person Rick; 03.07.2012
comment
Вообще-то я надеялся на какой-нибудь пейджинговый механизм... Но твой сарказм был бесценен - person SoftwareSavant; 04.07.2012
comment
К сожалению, я не телепат. Возможно, вам следовало спросить о механизме пейджинга? - person Rick; 05.07.2012
comment
пейджинг, кеширование, я действительно открыт для любого решения. - person SoftwareSavant; 05.07.2012
comment
Я все еще остаюсь при своем первоначальном ответе. Держитесь за меньше памяти. Кэширование не решит эту проблему, и даже пейджинг не поможет тому факту, что вы держите слишком много памяти. - person Rick; 05.07.2012