У нас есть приложение, которое раз в день использует всю выделенную память кучи. Я сделал кучу памяти кучи памяти, чтобы помочь мне найти причину этой проблемы, которая доступна по этой ссылке 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
нужно больше информации, я доступен, благодарен всем, кто может помочь.
Приложение использует Java версию 1.5, и, к сожалению, мы не можем изменить версию Java по этой причине, потому что другой поставщик является администратором сервера. –
Итак, вы пытались запустить приложение с Java 1.7 или 1.8, и это не удалось? –
Нет, локально использование этих версий Java работает, но не происходит нехватка памяти. Мы не получили то, что происходит на сервере в нашей среде. –