Enviar pesquisa
Carregar
자바 메모리 릭 패턴
•
Transferir como PPTX, PDF
•
58 gostaram
•
5,409 visualizações
효원 강
Seguir
어쩌다 어쩌다 대충 정리 해 본 것...
Leia menos
Leia mais
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 10
Baixar agora
Recomendados
스프링 어플리케이션의 문제해결사례와 안티패턴
스프링 어플리케이션의 문제해결사례와 안티패턴
Sanghyuk Jung
Spring one참석기 ksug
Spring one참석기 ksug
Sanghyuk Jung
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDD
Sanghyuk Jung
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
중선 곽
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
overview of spring4
overview of spring4
Arawn Park
세미나 Spring mybatis
세미나 Spring mybatis
Somang Jeong
Html5 performance
Html5 performance
yongwoo Jeon
Recomendados
스프링 어플리케이션의 문제해결사례와 안티패턴
스프링 어플리케이션의 문제해결사례와 안티패턴
Sanghyuk Jung
Spring one참석기 ksug
Spring one참석기 ksug
Sanghyuk Jung
Spring batch와 함께 하는 TDD
Spring batch와 함께 하는 TDD
Sanghyuk Jung
Tomcat monitoring using_javamelody
Tomcat monitoring using_javamelody
중선 곽
소프트웨어 개선 그룹(Sig) 개발 원칙
소프트웨어 개선 그룹(Sig) 개발 원칙
Hong Hyo Sang
overview of spring4
overview of spring4
Arawn Park
세미나 Spring mybatis
세미나 Spring mybatis
Somang Jeong
Html5 performance
Html5 performance
yongwoo Jeon
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
NAVER D2
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
JSP 빠르게 시작하기
JSP 빠르게 시작하기
Park JoongSoo
Spring 교육 자료
Spring 교육 자료
Hyosang Hong
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Javajigi Jaesung
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
Hyosang Hong
Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기
jiseob kim
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
NAVER D2
Spring test mvc 발표자료
Spring test mvc 발표자료
수홍 이
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
EunChul Shin
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
Chang-Hwan Han
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
beom kyun choi
Spring Boot 2
Spring Boot 2
경륜 이
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015
Woonduk-Kang
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
Spring IoC
Spring IoC
Suan Lee
Java 기초
Java 기초
Hyosang Hong
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
sys4u
04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재
Hankyo
Spring Boot 1
Spring Boot 1
경륜 이
About garbage collection
About garbage collection
NAVER / MusicPlatform
Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기
JinKwon Lee
Mais conteúdo relacionado
Mais procurados
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
NAVER D2
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
탑크리에듀(구로디지털단지역3번출구 2분거리)
JSP 빠르게 시작하기
JSP 빠르게 시작하기
Park JoongSoo
Spring 교육 자료
Spring 교육 자료
Hyosang Hong
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Javajigi Jaesung
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
Hyosang Hong
Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기
jiseob kim
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
NAVER D2
Spring test mvc 발표자료
Spring test mvc 발표자료
수홍 이
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
EunChul Shin
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
Chang-Hwan Han
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
beom kyun choi
Spring Boot 2
Spring Boot 2
경륜 이
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015
Woonduk-Kang
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
NAVER D2
Spring IoC
Spring IoC
Suan Lee
Java 기초
Java 기초
Hyosang Hong
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
sys4u
04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재
Hankyo
Spring Boot 1
Spring Boot 1
경륜 이
Mais procurados
(20)
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - Http Request
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
(C#,네트워크강좌)간단한 TCP 클라이언트/서버 구현, 멀티쓰레드 기반 에코우 클라이언트/서버_C추천#/WPF/자마린실무교육학원
JSP 빠르게 시작하기
JSP 빠르게 시작하기
Spring 교육 자료
Spring 교육 자료
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
유지보수 가능한 개발 원칙
유지보수 가능한 개발 원칙
Spring 웹 프로젝트 시작하기
Spring 웹 프로젝트 시작하기
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
[D2 CAMPUS] 안드로이드 오픈소스 스터디자료 - OkHttp
Spring test mvc 발표자료
Spring test mvc 발표자료
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
스프링군살없이세팅하기(The way to setting the Spring framework for web.)
자바9 특징 (Java9 Features)
자바9 특징 (Java9 Features)
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Spring Boot 2
Spring Boot 2
Pinpoint spring_camp 2015
Pinpoint spring_camp 2015
[Hello world 오픈세미나]open api client개발
[Hello world 오픈세미나]open api client개발
Spring IoC
Spring IoC
Java 기초
Java 기초
Introduction to Fork Join Framework_SYS4U I&C
Introduction to Fork Join Framework_SYS4U I&C
04.[참고]개발환경 실습교재
04.[참고]개발환경 실습교재
Spring Boot 1
Spring Boot 1
Destaque
About garbage collection
About garbage collection
NAVER / MusicPlatform
Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기
JinKwon Lee
Redmine키노트
Redmine키노트
명규 장
안정적인 서비스 운영 2014.03
안정적인 서비스 운영 2014.03
Changyol BAEK
스프링 부트와 로깅
스프링 부트와 로깅
Keesun Baik
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
YoungSu Son
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기
Tai Hoon KIM
세미나
세미나
Dongyi Kim
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001
BJ Jang
JavaScript MEAN 스택
JavaScript MEAN 스택
Tai Hoon KIM
오픈소스를 활용한 Batch_처리_플랫폼_공유
오픈소스를 활용한 Batch_처리_플랫폼_공유
knight1128
팀 생산성 향상을 위한 Redmine 도입
팀 생산성 향상을 위한 Redmine 도입
Seungyoon Lee
[D2]java 성능에 대한 오해와 편견
[D2]java 성능에 대한 오해와 편견
NAVER D2
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
Baekjoon Choi
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
Lee Ji Eun
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
Jaewoo Ahn
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
Amazon Web Services Korea
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
Ji-Woong Choi
Destaque
(18)
About garbage collection
About garbage collection
Next Javascript ES2015 시작하기
Next Javascript ES2015 시작하기
Redmine키노트
Redmine키노트
안정적인 서비스 운영 2014.03
안정적인 서비스 운영 2014.03
스프링 부트와 로깅
스프링 부트와 로깅
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
FullStack 개발자 만들기 과정 소개 (Android + MEAN Stack + Redis 다루기)
라즈베리파이로 보일러 제어하기
라즈베리파이로 보일러 제어하기
세미나
세미나
Github를 이용한 협동개발 20141001
Github를 이용한 협동개발 20141001
JavaScript MEAN 스택
JavaScript MEAN 스택
오픈소스를 활용한 Batch_처리_플랫폼_공유
오픈소스를 활용한 Batch_처리_플랫폼_공유
팀 생산성 향상을 위한 Redmine 도입
팀 생산성 향상을 위한 Redmine 도입
[D2]java 성능에 대한 오해와 편견
[D2]java 성능에 대한 오해와 편견
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
나는 어떻게 알고리즘을 공부했을까? + 신기한 방법으로 문제 풀어보기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
SK플래닛_README_마이크로서비스 아키텍처로 개발하기
기술적 변화를 이끌어가기
기술적 변화를 이끌어가기
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
마이크로서비스 아키텍처와 DevOps 기술 - Amazon 사례를 중심으로 (윤석찬)
[오픈소스컨설팅]Java Performance Tuning
[오픈소스컨설팅]Java Performance Tuning
Semelhante a 자바 메모리 릭 패턴
토비의 스프링 - DI
토비의 스프링 - DI
JU Chae
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
sung ki choi
Sql 중심 코드 탈피 발표자료
Sql 중심 코드 탈피 발표자료
ssuser776e2d
Sql 중심 코드 탈피
Sql 중심 코드 탈피
ssuser776e2d
JVM Synchronization_Wh apm
JVM Synchronization_Wh apm
엑셈
7가지 동시성 모델-2장
7가지 동시성 모델-2장
Sunggon Song
Java 8 고급 (3/6)
Java 8 고급 (3/6)
Kyung Koo Yoon
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Hyuncheol Jeon
RequireJS를 이용한 모듈관리.
RequireJS를 이용한 모듈관리.
Hyung Eun Jin
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
NAVER Engineering
쓰레드.pdf
쓰레드.pdf
Seokju Hong
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
NAVER D2
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XpressEngine
React js 1
React js 1
JaeKwang Jung
[Codelab 2017] ReactJS 기초
[Codelab 2017] ReactJS 기초
양재동 코드랩
11장 시스템
11장 시스템
kidoki
Java_Concurrency_Programming_SYS4U
Java_Concurrency_Programming_SYS4U
sys4u
아키텍트가 바라보는 Spring framework
아키텍트가 바라보는 Spring framework
Haeil Yi
Java(2/4)
Java(2/4)
handfoot
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
Hyosang Hong
Semelhante a 자바 메모리 릭 패턴
(20)
토비의 스프링 - DI
토비의 스프링 - DI
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
Sql 중심 코드 탈피 발표자료
Sql 중심 코드 탈피 발표자료
Sql 중심 코드 탈피
Sql 중심 코드 탈피
JVM Synchronization_Wh apm
JVM Synchronization_Wh apm
7가지 동시성 모델-2장
7가지 동시성 모델-2장
Java 8 고급 (3/6)
Java 8 고급 (3/6)
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
Secrets of the JavaScript Ninja - Chapter 12. DOM modification
RequireJS를 이용한 모듈관리.
RequireJS를 이용한 모듈관리.
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
[16]Obfuscation 101 : 난독화, 프로가드, R8, 트랜스포머 API
쓰레드.pdf
쓰레드.pdf
[2D4]Python에서의 동시성_병렬성
[2D4]Python에서의 동시성_병렬성
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
XE 오픈 세미나(2014-04-26) - 김동현 "XE 코어 구조론"
React js 1
React js 1
[Codelab 2017] ReactJS 기초
[Codelab 2017] ReactJS 기초
11장 시스템
11장 시스템
Java_Concurrency_Programming_SYS4U
Java_Concurrency_Programming_SYS4U
아키텍트가 바라보는 Spring framework
아키텍트가 바라보는 Spring framework
Java(2/4)
Java(2/4)
Jpa 쿼리 포함 자료
Jpa 쿼리 포함 자료
자바 메모리 릭 패턴
1.
2012.10
Java Memory Leak Pattern Excellence in Application & Data Governance
2.
Java 의 Memory
Leak http://blog.dynatrace.com/2009/08/13/java-memory-problems/ © 2012 GTOne. All rights reserved. 2
3.
Case 1 :
Field Object Array 관리 ref : Effective Java, Item 6 elements 배열 내에 Object reference가 계속 남아 있음. © 2012 GTOne. All rights reserved. 3
4.
Case 2 :
Field Static Container • Static Container 로 사용하는 경우 Object 소멸 시에도 Static Container가 Clear 되지 않아 내부의 Object Reference가 남아 있게 됨 © 2012 GTOne. All rights reserved. 4
5.
Case 3 :
HttpSession and WebApplicationContext Object • Session 은 User 가 logout 할때 까지, Application Context 는 Application 이 종료할 때까지, Data가 살아 있으므로 명시적으로 제거 하지 않으면 Memory Leak 이 발생 • Case 2의 특정한 케이스 • HttpSession 의 경우 가능 하다면 HttpRequest를 이용하여 해당 케이스를 해결 가능. – Use HttpRequest to transfer data whenever possible instead of HttpSession. If the objects have to be available for longer time, then they can be moved to the business layer. Elements in the session must be explicitly removed © 2012 GTOne. All rights reserved. 5
6.
Case 4 :
ResultSet and Statement Objects • Jdbc Connection 을 Memory Pool 을 이용하여 사용하는 경우, 보통 Connection 의 close가 물리적 Close가 아닌 Pool로의 반환을 의미 • 이때 Statement 객체와 ResultSet 객에에 대한 Memory Leak 발생 © 2012 GTOne. All rights reserved. 6
7.
Case 5: ThreadLocal
Memory Leak public class ConnectionUtil .... { ... /* threadLocal을 이용해서 같은 connection을 끊지 않는 이상은 공유 */ public static final ThreadLocal<Connection> threadLocal = new ThreadLocal<Connection>(); public Connection getConnection(){ Connection connection = (Connection)threadLocal.get(); try{ if(connection == null){ connection = dataSource.getConnection(); threadLocal.set(connection); } return connection; }catch(SQLException e){ e.printStackTrace(); throw new DAOException(e.getMessage()); } } ... } • 만일 Thread가 ThreadPool에서 관리되는 형태라면, 명시적으로 ThreadLocal 변수를 제거하지 않는 경우 Memory Leak 이 발생 • Example : Jboss 의 DOMUtils 클래스가 Threalocal 변수를 삭제하지 않은 버그가 있었음 ( 1.2.0 의 버그 1.2.1 에서 fix ) © 2012 GTOne. All rights reserved. 7
8.
Case 6 :
Thread.stop() and ExecutorService.shutdownNow() (Tomcat ) ref : http://atin.tistory.com/438 • Thread.Stop : 무조건 종료 ( 무한 루프 무시 ) • ExecutoorService.shutdownsNow() : 단순 인터럽트 호출, while(true) 같은 경우가 있다면 종료 되지 않음. • 같은 이유에서 ThreadPool을 이용하여 Thread가 관리 된다면 – While(true) while(isInterrupted() ) or while(Thread.currentThread().isInterrupted()) 와 같이 사용해야함. © 2012 GTOne. All rights reserved. 8
9.
기타 참고 사항
• HashMap 대신 WeakHashMap 사용 : key 에 대한 reference가 유효할 동안만 항목 유지, 객체를 key 로 하는 경우에 유용. • 주기적으로 collectioin 에 new Object를 추가 하는 루틴 검사 ( info 성 ) • 너무 많은 Class가 Load되거나 큰 Class가 로드되는 경우 : ClassLoad Leaks. • String.intern() 메서드( String a = “ddd”; String a = “ddd”.intern() ) 에 버그가 있었으나 1.4 이후 fix • File.deleteOn PMD , MEMORY LEAK관(으로 생각되는) RULE © 2012 GTOne. All rights reserved. 9
10.
reference
• http://java-x.blogspot.kr/2006/03/java-memory-leaks.html • http://www.ibm.com/developerworks/rational/library/05/0816_GuptaPalanki/ • Effective Java 2nd Edition • http://atin.tistory.com/438 • http://stackoverflow.com/questions/6470651/creating-a-memory-leak-with-java • http://www.java-tips.org/java-se-tips/java.util/using-weakhashmap-for-listener-lists.html © 2012 GTOne. All rights reserved. 10
Baixar agora