2016-06-15 4 views
0

У нас есть приложение, которое раз в день использует всю выделенную память кучи. Я сделал кучу памяти кучи памяти, чтобы помочь мне найти причину этой проблемы, которая доступна по этой ссылке https://drive.google.com/file/d/0BwMd9KDnQRfQT3dzRTZfUWdjMU0/view?usp=sharing. Я считаю, что приложение плохо реализовано, или это может быть связано с технологией DB4O и его объектами, отправленными между клиентом и сервером, или соединениями, открытыми для сервера, после того, как пользователи синхронизируют данные между их системами и сервером. Служба не указала ошибку: из памяти: пустое место, но я следую за вашим распределением ресурсов, чтобы сказать это.Кучное пространство - управление памятью

Я запуск приложения с помощью этого скрипта ...

set +x 

export BRANCHOFFICE_HOME=/bat/orquestra/branchoffice/live18 
cd ${BRANCHOFFICE_HOME} 
echo BRANCHOFFICE_HOME = ${BRANCHOFFICE_HOME} 

# classpath 
OQT_CLASSPATH=${BRANCHOFFICE_HOME}/classes/:${BRANCHOFFICE_HOME}/classes/branchoffice.jar 

for libFile in ${BRANCHOFFICE_HOME}/lib/*.jar 
do 
    OQT_CLASSPATH=${OQT_CLASSPATH}:${libFile} 
done 

export OQT_CLASSPATH 
echo OQT_CLASSPATH = ${OQT_CLASSPATH} 

# JVM arguments 
JAVA_ARGS=-server 
JAVA_ARGS=${JAVA_ARGS}" -Xms2048m" 
JAVA_ARGS=${JAVA_ARGS}" -Xmx2048m" 
JAVA_ARGS=${JAVA_ARGS}" -XX:+UseLargePages" 
JAVA_ARGS=${JAVA_ARGS}" -Duser.timezone=America/Sao_Paulo" 
JAVA_ARGS=${JAVA_ARGS}" -Duser.country=BR" 
JAVA_ARGS=${JAVA_ARGS}" -Duser.language=pt" 
JAVA_ARGS=${JAVA_ARGS}" -cp "${OQT_CLASSPATH} 
JAVA_ARGS=${JAVA_ARGS}" -Dcom.sun.management.jmxremote=synchengine.SynchEngine" 
JAVA_ARGS=${JAVA_ARGS}" -Dcom.sun.management.jmxremote.port=1207" 
JAVA_ARGS=${JAVA_ARGS}" -Dcom.sun.management.jmxremote.password.file="${BRANCHOFFICE_HOME}"/config/passwordFile" 
JAVA_ARGS=${JAVA_ARGS}" -Dcom.sun.management.jmxremote.access.file="${BRANCHOFFICE_HOME}"/config/accessFile" 
JAVA_ARGS=${JAVA_ARGS}" -Dcom.sun.management.snmp.acl.file="${BRANCHOFFICE_HOME}"/config/acl" 
JAVA_ARGS=${JAVA_ARGS}" -Dcom.sun.management.jmxremote.ssl=false" 
export JAVA_ARGS 
echo JAVA_ARGS = ${JAVA_ARGS} 

# APP arguments 
export APP_ARGS=${BRANCHOFFICE_HOME}/config/SynchEngine.xml 
echo APP_ARGS = ${APP_ARGS} 

echo Starting Synchronization Engine 

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

сервер ...

  • Архитектура: x86_64
  • CPU оп-режим (ы): 32-бит, 64-бит
  • Байт: Little Endian
  • CPU (s) : 4
  • -лайн процессора (ов) список: 0-3
  • нить (ы) в ядре: 1
  • сердечник (ы) в гнездо: 1
  • Разъем (ы): 4
  • NUMA узел (ы): 1
  • ID производителя: GenuineIntel
  • процессора семейства: 6
  • Модель: 42
  • Степпинг: 2
  • процессора МГц : 2294.472
  • BogoMIPS: 4588,94
  • гипервизор поставщика: VMware
  • Тип виртуализации: полный
  • L1d кэша: 32K
  • L1i кэша: 32K
  • L2 кэш-память: 256K
  • кэша L3: 15360K
  • NUMA NODE0 Процессор (ы): 0-3

  • Linux версия 3.0.101-0.21-default (geeko @ buildhost) (версия gcc 4.3.4 [gcc-4_3-ветвь ревизии 152973] (SUSE Linux)) # 1 SMP Mon Apr 7 12:32:42 UTC 2014 (172cdff)

  • Java версия: 1.5.0_22 x64
  • db4o версия: 6,1

нужно больше информации, я доступен, благодарен всем, кто может помочь.

ответ

0

Используйте JVisualVM (в каталоге java), чтобы профилировать приложение во время работы. Затем вы можете видеть общее использование памяти и также наблюдать за количеством объектов памяти различных объектов.

+0

Приложение использует Java версию 1.5, и, к сожалению, мы не можем изменить версию Java по этой причине, потому что другой поставщик является администратором сервера. –

+0

Итак, вы пытались запустить приложение с Java 1.7 или 1.8, и это не удалось? –

+0

Нет, локально использование этих версий Java работает, но не происходит нехватка памяти. Мы не получили то, что происходит на сервере в нашей среде. –

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