SEARCH
TOOLBOX
LANGUAGES
Java

Java

From Chaehyun

(Difference between revisions)
Jump to: navigation, search
Line 51: Line 51:
** GC가 시간을 다 먹고 있었음
** GC가 시간을 다 먹고 있었음
** memory leak
** memory leak
 +
 +
= 메모리 =
 +
* c1visualizer : 메모리가 어떻게 사용되는지 보여준다...??
 +
** 최적화된 for문 찾기??
 +
** debug option이 사용 가능한 JDK가 필요함
 +
** 오라클 사이트에서 DEBUG build 를 다운 받는다
 +
 +
== Java OutOfMemoryError [[User:Xlos|Xlos]] 뒤에 나오는 멘트가 중요함 ==
 +
* 교재 참조

Revision as of 05:13, 28 January 2011

  • Lock을 피하는 10가지 방법 -> 나중에 읽어볼 것
  • 쓰레드 덤프
    • linux : kill -3 pid 명령어
    • windows : ctrl + break
    • 공통 : jstack (비추)
    • kill -3 dump는 크게 문제 없음 (운영 중인 서비스라 할지라도)
  • pid 확인 방법
    • linux : ps -ef | grep java
    • windows : 작업 관리자 프로세스 화면 -> 보기 -> 열선택
  • JConsole
    • cmd 창에서 JConsole - Connect
    • jps
    • jstack ### (dump 나옴)
  • 툴을 사용하자
    • TDA (Thread Dump Analyer) http://java.net/projects/tda/
    • 윈도우에서 로그 남기는 팁
      • putty 설정 - Change Setting - Session - Logging - All Session output
      • screen은 끄고 하는 게 신상에 이로움
    • TDA에서 로그 파일을 연다
      • 로그파일(날짜)로 시작하는 파일이어야 TDA에서 제대로 인식함
  • ps -eLf | grep java
    • thread별 cpu 사용량을 보여준다
    • watch out L option
    • TDA에서 Native-ID랑 ps -eLf 네 번 째 옵션이랑 동일함 -> TDA에서 해당 Native ID를 확인하면 어느 thread가 계속 먹고 있는지 확인할 수 있음
    • TDA에서 네 번째 쌍안경을 누르면 계속 각 dump에서 계속 살아 남은 thread를 확인할 수 있음

실습

  • 네이버 뉴스
    • 네트워크, 디스크 가 병목이었을 수 있음
  • 포토
    • 자바 문제가 아님, 아파치 웹 서버 문제였음
    • 스레드 수로 대충 파악 가능함
  • activeQ
    • thread에서 AlamrmListener 클릭
    • 아래에 링크 클릭
    • 모니터로 연결
    • 많은 thread가 줄 서 있음
  • cafe
    • elf log 보면서 시간이 많이 걸린 녀석들을 찾아본다
    • TDA - thread에서 Native ID로 조회해서 확인
    • GC가 시간을 다 먹고 있었음
    • memory leak

메모리

  • c1visualizer : 메모리가 어떻게 사용되는지 보여준다...??
    • 최적화된 for문 찾기??
    • debug option이 사용 가능한 JDK가 필요함
    • 오라클 사이트에서 DEBUG build 를 다운 받는다

Java OutOfMemoryError Xlos 뒤에 나오는 멘트가 중요함

  • 교재 참조
Retrieved from "http://chaehyun.kr/w/Java"