Хэш-карта списка строк дает мне OutOfMemoryError - PullRequest
0 голосов
/ 25 февраля 2012

Строка в моей программе, которая объявляет Hashmap, вызывает ошибку.

public class SubjectTeacherPeriod{
private int id;

private Map<String, Integer> num_attribute_map; 
private Map<String,List<String>> str_attribute_map; 

private Period period;
private List<Period> periodList;

public SubjectTeacherPeriod(){
    num_attribute_map = new HashMap<String, Integer>();
    str_attribute_map = new HashMap<String,List<String>>();  //THIS LINE
}
 ....

несет ответственность за:

jesvin@Jesvin-Technovia:~/dev/drools/timetabler$ java -server in.co.technovia.timetabler.TimeTableApp
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
    at java.util.HashMap.<init>(HashMap.java:226)
    at in.co.technovia.timetabler.domain.SubjectTeacherPeriod.<init>(SubjectTeacherPeriod.java:38)
    at in.co.technovia.timetabler.solution.TimeTableInitializer.createTimeTable(TimeTableInitializer.java:66)
    at in.co.technovia.timetabler.TimeTableApp.main(TimeTableApp.java:37)

Что не так с моим hashmap?


Обновление: Как и все догадки, плохая переменная цикла создала слишком много переменных. Это не было проблемой самого hashmap.

Ответы [ 3 ]

3 голосов
/ 25 февраля 2012

Нет ничего плохого в вашей хэш-карте.(Как это может быть? Вы просто декларируете / создаете его экземпляр.)

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

1 голос
/ 25 февраля 2012

Возможно, вам необходимо:

  1. Убедитесь, что вы не выделяете больше SubjectTeacherPeriod объектов, чем необходимо.
  2. Увеличьте размер пула выделения памяти.См. Параметр -Xmx для исполняемого файла Java.
1 голос
/ 25 февраля 2012

Если это не ошибка приложения, и вы законно добавляете колоссальный объем данных в свои HashMaps, см. Эту статью о том, как увеличить пространство кучи.

http://javarevisited.blogspot.com/2011/09/javalangoutofmemoryerror-permgen-space.html

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