Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сборка мусора 
V
    Опции темы
yuliada
Дата 20.9.2009, 04:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



Программа падает с OutOfMemoryError при большой загрузке данных в память. Данные читаются из файла через ObjectInputStream, там лежит парочка очень больших Hashtable, занимают они примерно гигов 14 после загрузки. В какой-то момент начинает постоянно запускаться gc, при чем при одном и том же значении занятой памяти, хотя свободной памяти еще очень много.

Код

c:\distAutomappingLoader>java -Xmx17500M -Xms17500M -verbose:gc -XX:-UseGCOverhe
adLimit -jar DataIntegrator.jar
[17:31:51,457] [INFO ] [AutomappingFolderLoader] [main] Proccessing folder c:\Da
taIntegration\ORegAnno
Drop db if exists...
Launching process...
Process started...
OUT> DROP DATABASE
Process finished
Create db...
Launching process...
Process started...
OUT> CREATE DATABASE
Process finished
Create lang...
Launching process...
Process started...
ERROR> createlang: language "plpgsql" is already installed in database "oreganno
"
Process finished
[17:36:49,667] [INFO ] [Data2FileWriter] [SwingWorker-pool-1-thread-1] Clean up
image folders
[17:36:49,667] [INFO ] [Data2FileWriter] [SwingWorker-pool-1-thread-1] Clean up
image folders finished
[17:36:49,667] [INFO ] [Data2FileWriter] [SwingWorker-pool-1-thread-1] Clean up
data folders
[17:36:49,667] [INFO ] [Data2FileWriter] [SwingWorker-pool-1-thread-1] Clean up
data folders finished
[GC 4480064K->3485K(17173376K), 0.0088464 secs]
[GC 4483549K->3469K(17173376K), 0.0055549 secs]
COPY from c:\tempDbUploader\oreganno\0.dat Sat Sep 19 17:37:02 PDT 2009
COPY finished Sat Sep 19 17:37:06 PDT 2009 took 3666
[17:37:06,156] [INFO ] [AutomappingFolderLoader] [main] Creating mapping for c:\
DataIntegration\ORegAnno
[17:37:06,156] [INFO ] [AutoMapping] [main] Clean up memory before creating mapp
ing
[GC 3773889K->3421K(17173376K), 0.0046884 secs]
[Full GC 3421K->2384K(17173376K), 0.0437366 secs]
[17:37:06,203] [INFO ] [AutoMapping] [main] Free memeory: 17505497232
[17:37:06,250] [INFO ] [AutoMapping] [main] Free memeory after pqm init: 1746501
9448
[17:37:06,265] [INFO ] [AutoMapping] [main] Free memeory before dictionary loadi
ng: 17465019448
[17:37:06,296] [INFO ] [DBCache] [main] Reading db cache
[GC 4482448K->2661535K(17173376K), 4.1687538 secs]
[GC 7141599K->5268681K(17173376K), 5.8632817 secs]
[GC 9748745K->7948059K(14684416K), 6.8737520 secs]
[GC 9939163K->9148273K(15928896K), 4.3652216 secs]
[GC 10632016K->10342571K(15928896K), 5.7408249 secs]
[GC 12333675K->11429862K(15928896K), 4.3598314 secs]
[Full GC 11429862K->11428664K(15928896K), 27.3218523 secs]
[Full GC 13419768K->12570156K(15928896K), 29.8899905 secs]
[Full GC 13937791K->12923942K(15928896K), 38.6754758 secs]
[Full GC 13937791K->13616689K(15928896K), 33.6074579 secs]
[Full GC 13937791K->13791952K(15928896K), 32.5105643 secs]
[Full GC 13937791K->13870330K(15928896K), 32.9610150 secs]
[Full GC 13937791K->13803091K(15928896K), 35.0629913 secs]
[Full GC 13937791K->13937791K(15928896K), 33.4074016 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor6]

[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor13]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor9]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor1]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor12]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor5]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor2]
[Unloading class sun.reflect.GeneratedMethodAccessor31]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor11]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor8]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor7]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor3]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor4]
 13937791K->13877536K(15928896K), 40.0829279 secs]
[Full GC 13937791K->13937791K(15928896K), 32.3159591 secs]
[Full GC[Unloading class sun.reflect.GeneratedMethodAccessor28]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor17]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor10]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor23]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor24]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor33]
[Unloading class sun.reflect.GeneratedMethodAccessor27]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor16]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor30]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor18]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor32]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor21]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor34]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor31]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor35]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor19]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor22]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor29]
[Unloading class sun.reflect.GeneratedMethodAccessor19]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor20]
 13937791K->13894248K(15928896K), 39.6858220 secs]
[Full GC 13937791K->13937791K(15928896K), 33.3874344 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor45
]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor49]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor42]
[Unloading class sun.reflect.GeneratedMethodAccessor38]
[Unloading class sun.reflect.GeneratedMethodAccessor39]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor48]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor43]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor47]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor40]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor44]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor38]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor36]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor39]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor46]
 13937791K->13908849K(15928896K), 39.8373431 secs]
[Full GC 13937791K->13937791K(15928896K), 33.5401437 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor60
]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor52]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor53]
[Unloading class sun.reflect.GeneratedMethodAccessor40]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor61]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor59]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor37]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor56]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor57]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor51]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor54]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor58]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor50]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor55]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor41]
 13937791K->13919589K(15928896K), 34.9016156 secs]
[Full GC[Unloading class sun.reflect.GeneratedMethodAccessor41]
 13937791K->13937791K(15928896K), 33.6243064 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor71
]
[Unloading class sun.reflect.GeneratedMethodAccessor43]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor65]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor73]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor68]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor74]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor63]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor62]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor72]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor69]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor64]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor66]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor75]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor67]
[Unloading class sun.reflect.GeneratedMethodAccessor42]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor70]
 13937791K->13924500K(15928896K), 32.5474931 secs]
[Full GC 13937791K->13937791K(15928896K), 32.5263038 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor85
]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor90]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor77]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor88]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor84]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor87]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor92]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor83]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor76]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor91]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor86]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor81]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor78]
[Unloading class sun.reflect.GeneratedMethodAccessor44]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor80]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor82]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor89]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor79]
 13937791K->13928406K(15928896K), 39.8728543 secs]
[Full GC[Unloading class sun.reflect.GeneratedMethodAccessor46]
[Unloading class sun.reflect.GeneratedMethodAccessor48]
[Unloading class sun.reflect.GeneratedMethodAccessor45]
 13937791K->13937791K(15928896K), 34.1698515 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor93
]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor98]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor95]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor96]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor94]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor97]
 13937791K->13928876K(15928896K), 33.8560711 secs]
[Full GC 13937791K->13937791K(15928896K), 32.8265567 secs]
[Full GC 13937792K->13929578K(15928896K), 33.8523331 secs]
Sep 19, 2009 6:00:39 PM ServerCommunicatorAdmin reqIncoming
WARNING: The server has decided to close this client connection.
Sep 19, 2009 6:00:39 PM ServerCommunicatorAdmin reqIncoming
WARNING: The server has decided to close this client connection.
Sep 19, 2009 6:00:39 PM ServerCommunicatorAdmin reqIncoming
WARNING: The server has decided to close this client connection.
[Full GC 13937792K->13937792K(15928896K), 33.3947354 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor10
9]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor110]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor111]
[Unloading class sun.reflect.GeneratedMethodAccessor47]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor108]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor101]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor104]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor100]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor103]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor107]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor112]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor102]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor106]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor99]
[Unloading class sun.reflect.GeneratedMethodAccessor49]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor105]
 13937792K->13933794K(15928896K), 39.3103839 secs]
[Full GC 13937791K->13937791K(15928896K), 33.7030317 secs]
[Full GC 13937791K->13935977K(15928896K), 35.0548381 secs]
[Full GC 13937791K->13937791K(15928896K), 31.8499122 secs]
[Full GC 13937791K->13936976K(15928896K), 33.2076415 secs]
[Full GC 13937791K->13937791K(15928896K), 33.0390010 secs]
[Full GC 13937791K->13936956K(15928896K), 40.1871308 secs]
[Full GC 13937791K->13937791K(15928896K), 51.2912798 secs]
[Full GC 13937791K->13936954K(15928896K), 32.7097839 secs]
[Full GC 13937791K->13937791K(15928896K), 33.7743205 secs]
[Full GC 13937791K->13937022K(15928896K), 33.0620488 secs]
[Full GC 13937791K->13937791K(15928896K), 33.0626159 secs]
[Full GC 13937791K->13937065K(15928896K), 33.7000325 secs]
[Full GC 13937791K->13937791K(15928896K), 33.0868086 secs]
[Full GC 13937791K->13937175K(15928896K), 32.3891737 secs]
[Full GC 13937791K->13937791K(15928896K), 32.1197644 secs]
[Full GC 13937791K->13937175K(15928896K), 33.5191229 secs]
[Full GC 13937791K->13937791K(15928896K), 33.5263727 secs]
[Full GC 13937791K->13937180K(15928896K), 39.4319066 secs]
[Full GC 13937792K->13937792K(15928896K), 31.8385318 secs]
[Full GC 13937792K->13937182K(15928896K), 33.4553751 secs]
[Full GC 13937792K->13937792K(15928896K), 33.1534555 secs]
[Full GC 13937792K->13937183K(15928896K), 33.2530708 secs]
[Full GC 13937792K->13937792K(15928896K), 33.7065906 secs]
[Full GC 13937792K->13937183K(15928896K), 39.5543170 secs]
[Full GC 13937791K->13937791K(15928896K), 32.8270381 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor11
4]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor113]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor115]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor116]
 13937791K->13937240K(15928896K), 39.6396326 secs]
[Full GC 13937791K->13937791K(15928896K), 32.9399291 secs]
[Full GC 13937791K->13937791K(15928896K), 33.0255893 secs]
[Full GC[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor11
8]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor119]
[Unloading class sun.reflect.GeneratedSerializationConstructorAccessor117]
 13937791K->13937374K(15928896K), 33.0066365 secs]
[Full GC 13937791K->13937477K(15928896K), 32.5185311 secs]
[Full GC 13937791K->13937791K(15928896K), 37.0054323 secs]
[Full GC 13937792K->13937792K(15928896K), 33.8332424 secs]
[Full GC 13937792K->13937661K(15928896K), 33.0850752 secs]
[Full GC 13937792K->13937661K(15928896K), 37.3485004 secs]
[Full GC 13937792K->13937792K(15928896K), 33.1795653 secs]
[Full GC 13937792K->13937689K(15928896K), 33.4663864 secs]
[Full GC 13937792K->13937792K(15928896K), 33.3165511 secs]
[Full GC 13937792K->13937694K(15928896K), 32.7161477 secs]
[Full GC 13937792K->13937792K(15928896K), 33.5911495 secs]
[Full GC 13937792K->13937694K(15928896K), 31.7440133 secs]
[Full GC 13937792K->13937792K(15928896K), 32.3883825 secs]
[Full GC 13937792K->13937695K(15928896K), 33.2798803 secs]
[Full GC 13937792K->13937792K(15928896K), 33.8540358 secs]
[Full GC 13937792K->13937696K(15928896K), 33.5192905 secs]
[Full GC


Здесь только кусок лога, т.к. до конца нужно долго ждать, дальше все выглядит примерно одинаково - куча вызовов gc и в конце прога помирает с java.lang.OutOfMemoryError: Java heap space. Если убрать -XX:-UseGCOverheadLimit то прога умрет раньше с java.lang.OutOfMemoryError: GC overhead limit exceeded.

Вот тут картинка с java visual vm - т.е. видно что памяти еще много и программа просто зависла на 13937792K.

Перед тем начать читать из файла эти большие hastable'ы в лог выводится runtime.maxMemory() - runtime.totalMemory() + runtime.freeMemory() - памяти достаточно.
Код

[17:37:06,265] [INFO ] [AutoMapping] [main] Free memeory before dictionary loadi
ng: 17465019448


Еще одна подозрительная вещь в самом начале загрузки
Код

[17:37:06,296] [INFO ] [DBCache] [main] Reading db cache
[GC 4482448K->2661535K(17173376K), 4.1687538 secs]
[GC 7141599K->5268681K(17173376K), 5.8632817 secs]
[GC 9748745K->7948059K(14684416K), 6.8737520 secs]
[GC 9939163K->9148273K(15928896K), 4.3652216 secs]
[GC 10632016K->10342571K(15928896K), 5.7408249 secs]
[GC 12333675K->11429862K(15928896K), 4.3598314 secs]
[Full GC 11429862K->11428664K(15928896K), 27.3218523 secs]

Т.е. макс. памяти было 17173376K, потом вдруг стало 14684416K, 15928896K и на этом значении так и держится.

Почему так происходит и как с эти бороться можно?
PM MAIL   Вверх
yuliada
Дата 21.9.2009, 01:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



Попробовала вынести загрузку в отдельную программку - работает:
Код

c:\distAutomappingLoader>java -Xmx17500M -Xms17500M -verbose:gc -jar DataIntegra
tor.jar
 INFO [main] (DBCache.java:392) - Free memeory before dictionary loading: 174937
85296
 INFO [main] (DBCache.java:100) - Reading db cache
[GC 4480064K->2709462K(17173376K), 4.5959194 secs]
[GC 7189526K->5339396K(17173376K), 6.2808392 secs]
[GC 9819460K->8155238K(17173376K), 8.4119570 secs]
[GC 12635302K->11104091K(17173376K), 6.6449278 secs]
[Full GC 11104091K->11102933K(17173376K), 27.2761150 secs]
[Full GC 15582997K->13890297K(17173376K), 36.1418820 secs]
[Full GC 16426751K->15529642K(17173376K), 39.6550150 secs]
 INFO [main] (DBCache.java:105) - Reading finished 859630ms
[Full GC 15739860K->13448075K(17173376K), 44.8200528 secs]
 INFO [main] (DBCache.java:395) - Free memeory after dictionary loading: 3766287
616
 INFO [main] (DBCache.java:396) - Used memeory: 13819249408

Интересно почему не хочет работать вместе со всем...
PM MAIL   Вверх
yuliada
Дата 2.10.2009, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



Что может помешать этой штуке загружаться в первом случае, если памяти в обоих случаях одинаково? Что-то нету идей что можно сделать и что там происходит...

Код

[17:37:06,265] [INFO ] [AutoMapping] [main] Free memeory before dictionary loadi
ng: 17465019448

Код

INFO [main] (DBCache.java:392) - Free memeory before dictionary loading: 174937
85296



Это сообщение отредактировал(а) yuliada - 2.10.2009, 11:41
PM MAIL   Вверх
yuliada
Дата 2.10.2009, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



JVM меняли, памяти дофига на машинке, размер процесса в taskmanager'е не менеятся. Не знаю про что еще подумать...  smile 

Это сообщение отредактировал(а) yuliada - 2.10.2009, 12:21
PM MAIL   Вверх
LSD
Дата 2.10.2009, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(yuliada @  20.9.2009,  04:58 Найти цитируемый пост)
Здесь только кусок лога, т.к. до конца нужно долго ждать, дальше все выглядит примерно одинаково - куча вызовов gc и в конце прога помирает с java.lang.OutOfMemoryError: Java heap space. Если убрать -XX:-UseGCOverheadLimit то прога умрет раньше с java.lang.OutOfMemoryError: GC overhead limit exceeded.

У меня есть что в этот момент идет создание большого объекта. Например вот код Hashtable (обрати внимание на 21 строку)
Код

    private void readObject(java.io.ObjectInputStream s)
         throws IOException, ClassNotFoundException
    {
    // Read in the length, threshold, and loadfactor
    s.defaultReadObject();

    // Read the original length of the array and number of elements
    int origlength = s.readInt();
    int elements = s.readInt();

    // Compute new size with a bit of room 5% to grow but
    // no larger than the original size.  Make the length
    // odd if it's large enough, this helps distribute the entries.
    // Guard against the length ending up zero, that's not valid.
    int length = (int)(elements * loadFactor) + (elements / 20) + 3;
    if (length > elements && (length & 1) == 0)
        length--;
    if (origlength > 0 && length > origlength)
        length = origlength;

    Entry[] table = new Entry[length];
    count = 0;

    // Read the number of elements and then all the key/value objects
    for (; elements > 0; elements--) {
        K key = (K)s.readObject();
        V value = (V)s.readObject();
            // synch could be eliminated for performance
            reconstitutionPut(table, key, value);
    }
    this.table = table;
    }

Свободной памяти до переполнения пула 3 888 мегов, этой памяти хватит на массив из ~ 500 000 000 объектов, плюс ко всему она должна быть непрерывной. У вас сколько объектов может быть в одной хеш таблице?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
yuliada
Дата 2.10.2009, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



Вот это то, что читается:
Код

    private Hashtable<String, HashSet<ObjectNode>> objectHashtable = new Hashtable<String, HashSet<ObjectNode>>();
    private Hashtable<String, HashSet<PrimitiveClass>> classHashtable = new Hashtable<String, HashSet<PrimitiveClass>>();
    private Hashtable<Integer, ObjectNode> objectIdsHashtable = new Hashtable<Integer, ObjectNode>();
    private Hashtable<Integer, PrimitiveClass> classIdsHashtable = new Hashtable<Integer, PrimitiveClass>();

В ObjectNode и PrimitiveClass пара полей String'ов и Integer'ов.

В самом большом hashtable лежит 19884087 объектов (в логе в конце):

Код

C:\Users\bnserv\Documents\NetBeansProjects\DataIntegrator\dist>java -verbose:gc
-Xmx17500M -Xms17500M -XX:-UseGCOverheadLimit -jar DataIntegrator.jar
 INFO [main] (DBCache.java:396) - Free memeory before dictionary loading: 174937
85296
 INFO [main] (DBCache.java:100) - Reading db cache
 INFO [main] (DBCache.java:102) - classHashtable readed
 INFO [main] (DBCache.java:104) - classIdsHashtable readed
[GC 4480064K->2709074K(17173376K), 3.1178556 secs]
[GC 7189138K->5339021K(17173376K), 3.8895983 secs]
[GC 9819085K->8155106K(17173376K), 4.7615086 secs]
[GC 12635170K->11104131K(17173376K), 6.3943055 secs]
[Full GC 11104131K->11103002K(17173376K), 21.9381623 secs]
[Full GC 15583066K->13890358K(17173376K), 33.2717882 secs]
 INFO [main] (DBCache.java:106) - objectHashtable readed
[Full GC 16426751K->15529763K(17173376K), 37.4858052 secs]
 INFO [main] (DBCache.java:108) - objectIdsHashtable readed
 INFO [main] (DBCache.java:109) - Reading finished 752825ms
[Full GC 15739980K->13448087K(17173376K), 43.7725766 secs]
 INFO [main] (DBCache.java:399) - Free memeory after dictionary loading: 3766275
424
 INFO [main] (DBCache.java:400) - Used memeory: 13819261600
 INFO [main] (DBCache.java:402) - objectHashtable.size()=19884087
 INFO [main] (DBCache.java:409) - max HashSet<ObjectNode> size=34148
 INFO [main] (DBCache.java:411) - classHashtable.size()=191277
 INFO [main] (DBCache.java:418) - max HashSet<PrimitiveClass> size=1476
 INFO [main] (DBCache.java:420) - objectIdsHashtable.size()=12690487
 INFO [main] (DBCache.java:421) - classIdsHashtable.size()=103917


Это сообщение отредактировал(а) yuliada - 2.10.2009, 14:34
PM MAIL   Вверх
LSD
Дата 2.10.2009, 15:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



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

Можно попробовать записать в поток половину данных и попробовать их считать.

Так же в то время как
Цитата(yuliada @  20.9.2009,  04:58 Найти цитируемый пост)
до конца нужно долго ждать, дальше все выглядит примерно одинаково - куча вызовов gc и в конце прога помирает с java.lang.OutOfMemoryError

нажать Ctrl+Break и посмотреть Thread dump, где именно ваш поток сейчас находится.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
yuliada
Дата 2.10.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



Цитата

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

hashtable'ы лежат внутри одного объекта, этот объект создается только один, у него в конструкторе инициализируется это все:
Код

public DBCache(String fileName) throws FileNotFoundException, IOException, ClassNotFoundException{
        FileInputStream fin = new FileInputStream(fileName);
        ObjectInputStream ois = new ObjectInputStream(fin);
        long time = System.currentTimeMillis();
        logger.info("Reading db cache");
        classHashtable = (Hashtable<String, HashSet<PrimitiveClass>>) ois.readObject();
        logger.info("classHashtable readed");
        classIdsHashtable = (Hashtable<Integer, PrimitiveClass>) ois.readObject();
        logger.info("classIdsHashtable readed");
        objectHashtable = (Hashtable<String, HashSet<ObjectNode>>) ois.readObject();
        logger.info("objectHashtable readed");
        objectIdsHashtable = (Hashtable<Integer, ObjectNode>) ois.readObject();
        logger.info("objectIdsHashtable readed");
        logger.info("Reading finished " + (System.currentTimeMillis() - time) + "ms");
        ois.close();
        fin.close();

    }


Цитата

Можно попробовать записать в поток половину данных и попробовать их считать.

...не совсем понятно...
Цитата

нажать Ctrl+Break и посмотреть Thread dump, где именно ваш поток сейчас находится.

попробую...


Это сообщение отредактировал(а) yuliada - 2.10.2009, 15:25
PM MAIL   Вверх
LSD
Дата 2.10.2009, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Цитата(yuliada @  2.10.2009,  15:18 Найти цитируемый пост)
..не совсем понятно...

Ну вы же как-то создаете этот файл с сериализованными данными. Можно туда записать не все данные, а только их часть?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
yuliada
Дата 8.10.2009, 02:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 82
Регистрация: 16.2.2009
Где: Иркутск - San Die go

Репутация: нет
Всего: нет



Поделила два больших Hashtable пополам, попробовала читать вот так:
Код

        logger.info("Reading db cache");
        classHashtable = (Hashtable<String, HashSet<PrimitiveClass>>) ois.readObject();
        logger.info("classHashtable readed");
        classIdsHashtable = (Hashtable<Integer, PrimitiveClass>) ois.readObject();
        logger.info("classIdsHashtable readed");
//        objectHashtable = (Hashtable<String, HashSet<ObjectNode>>) ois.readObject();
//        logger.info("objectHashtable readed");
//        objectIdsHashtable = (Hashtable<Integer, ObjectNode>) ois.readObject();
//        logger.info("objectIdsHashtable readed");
        {
            Hashtable<String, HashSet<ObjectNode>> part = (Hashtable<String, HashSet<ObjectNode>>) ois.readObject();
            objectHashtable = new Hashtable<String, HashSet<ObjectNode>>();
            for (Iterator<String> it = part.keySet().iterator(); it.hasNext();) {
                String key = it.next();
                objectHashtable.put(key, part.get(key));
                it.remove();
            }
            logger.info("objectHashtable part 1 readed");

            part = (Hashtable<String, HashSet<ObjectNode>>) ois.readObject();
            for (Iterator<String> it = part.keySet().iterator(); it.hasNext();) {
                String key = it.next();
                objectHashtable.put(key, part.get(key));
                it.remove();
            }
            logger.info("objectHashtable part 2 readed");
        }
        {
            Hashtable<Integer, ObjectNode> part = (Hashtable<Integer, ObjectNode>) ois.readObject();
            objectIdsHashtable = new Hashtable<Integer, ObjectNode>();
            for (Iterator<Integer> it = part.keySet().iterator(); it.hasNext();) {
                Integer key = it.next();
                objectIdsHashtable.put(key, part.get(key));
                it.remove();
            }
            logger.info("objectIdsHashtable part 1 readed");

            part = (Hashtable<Integer, ObjectNode>) ois.readObject();
            for (Iterator<Integer> it = part.keySet().iterator(); it.hasNext();) {
                Integer key = it.next();
                objectIdsHashtable.put(key, part.get(key));
                it.remove();
            }
            logger.info("objectIdsHashtable part 2 readed");
        }
        logger.info("Reading finished " + (System.currentTimeMillis() - time) + "ms");



Все равно упало. Воткнула
Код

            Runtime.getRuntime().gc();
            logger.info("Free memory " +(runtime.maxMemory() - runtime.totalMemory() + runtime.freeMemory() ));

после каждой прочитанной части - почему-то стало работать:
Код

[15:28:54,359] [INFO ] [AutoMapping] [main] Free memeory before dictionary loadi
ng: 17124851416
[15:28:54,531] [INFO ] [DBCache] [main] Reading db cache
[15:29:00,771] [INFO ] [DBCache] [main] classHashtable readed
[15:29:02,331] [INFO ] [DBCache] [main] classIdsHashtable readed
[GC 4394900K->2530194K(17173376K), 5.3229657 secs]
[GC 6659744K->5082115K(17173376K), 7.6540534 secs]
[GC 9512963K->7503300K(17173376K), 8.2696943 secs]
[15:38:00,578] [INFO ] [DBCache] [main] objectHashtable part 1 readed
[GC 8134725K->7838396K(17173376K), 2.6480047 secs]
[Full GC 7838396K->7837426K(17173376K), 35.5505149 secs]
[15:38:38,782] [INFO ] [DBCache] [main] Free memory 9458695136
[GC 12310997K->10932920K(17173376K), 6.2242226 secs]
[Full GC 10932920K->10931595K(17173376K), 46.6104918 secs]
[Full GC 15411659K->12752694K(17173376K), 81.2673977 secs]
[15:48:19,929] [INFO ] [DBCache] [main] objectHashtable part 2 readed
[Full GC 15983854K->15108802K(17173376K), 76.8903757 secs]
[15:49:36,821] [INFO ] [DBCache] [main] Free memory 2034974912
[Full GC 16404735K->15643762K(17173376K), 80.9307423 secs]
[15:52:25,520] [INFO ] [DBCache] [main] objectIdsHashtable part 1 readed
[Full GC 15857095K->15692914K(17173376K), 49.5832624 secs]
[15:53:15,128] [INFO ] [DBCache] [main] Free memory 1475539824
[Full GC 16426751K->15372217K(17173376K), 52.7077775 secs]
[15:55:10,349] [INFO ] [DBCache] [main] objectIdsHashtable part 2 readed
[Full GC 16093020K->15794795K(17173376K), 89.3398616 secs]
[15:56:50,096] [INFO ] [DBCache] [main] Free memory 1387221120
[15:56:50,096] [INFO ] [DBCache] [main] Reading finished 1675565ms


Как бы с бубнами, но вроде работает, если вдруг опять начнет падать - придется дальше разбираться...

Это сообщение отредактировал(а) yuliada - 8.10.2009, 02:25
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1320 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.