2016-06-15 5 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 비트
  • 바이트 순서 : 리틀 엔디안
  • CPU (들) 4
  • 온라인 CPU (들)에서 1
  • 코어 (들)는 소켓 당 : 코어 당 0-3
  • 나사 (S) 1,778,853,210
  • 소켓 (S) -4-
  • NUMA 노드 (들) : 1 개
  • 벤더 ID : GenuineIntel
  • CPU 가족 6
  • 모델 : 42
  • 스테핑 2
  • CPU MHz의 : 2294.472
  • 밉스 : 4588.94
  • 바이저 벤더 : VM웨어
  • ,446,832 10 가상화 형 풀
  • L1D 캐쉬 : 32K
  • L1i 캐시 : 32K
  • L2 캐시 : 256K
  • L3 캐시 : 15360K
  • NUMA의 node0의 CPU (들) : 0-3

  • 리눅스 버전 3.0.101-0.21-default (geeko @ buildhost) (gcc 버전 4.3.4 [gcc-4_3- 분기 개정판 152973] (수세 리눅스)) # 1 SMP Mon Apr 7 12:32:42 UTC 2014 (172cdff)

  • 자바 버전 : 1.5.0_22 64
  • db4o는 버전 : 6.1

도울 수있는 사람에게 내가 감사 사용할 오전 더 이상 정보를 필요로한다.

답변

0

JVisualVM (java 디렉토리에 있음)을 사용하여 실행 중에 응용 프로그램을 프로파일합니다. 그런 다음 총 메모리 사용량을 볼 수 있으며 여러 종류의 객체에 대한 메모리 사용량을 볼 수도 있습니다.

+0

응용 프로그램이 Java 버전 1.5를 사용하기 때문에 다른 공급 업체가 서버 관리자이기 때문에 유감스럽게도 Java 버전을 변경할 수 없습니다. –

+0

Java 1.7 또는 1.8을 사용하여 응용 프로그램을 실행하려했으나 실패했습니다. –

+0

아니요,이 Java 버전을 로컬에서 사용하면 작동하지만 메모리가 부족하지는 않습니다. 우리는 우리 환경에서 서버에서 발생하는 것을 얻지 못했습니다. –