У нас есть приложение, которое раз в день использует всю выделенную память кучи. Я сделал дамп памяти кучи, чтобы помочь мне найти причину этой проблемы, которая доступна по этой ссылке 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
- Операционные режимы ЦП: 32-разрядный, 64-разрядный
- Порядок байтов: Little Endian
- ЦП: 4
- Он-лайн список ЦП: 0-3
- Потоков на ядро: 1
- Ядра на сокет: 1
- Розетка (и): 4
- NUMA узлов: 1
- ID поставщика: GenuineIntel
- Семейство процессоров: 6
- Модель: 42
- Шаг: 2
- Процессор МГц: 2294,472
- BogoMIPS: 4588,94
- Производитель гипервизора: VMware
- Тип виртуализации: полная
- Кэш L1d: 32 КБ
- Кэш L1i: 32 КБ
- Кэш L2: 256 КБ
- Кэш L3: 15360 КБ
NUMA node0 ЦП: 0-3
Linux версии 3.0.101-0.21-default (geeko @ buildhost) (gcc версия 4.3.4 [gcc-4_3-branch revision 152973] (SUSE Linux)) # 1 SMP, понедельник, 7 апреля, 12:32:42 UTC, 2014 (172cdff)
- Версия Java: 1.5.0_22 x64
- Версия DB4O: 6.1
Нужна дополнительная информация. Я доступен, благодарен всем, кто может помочь.