Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Java Performance

No description
by

Sangmin Lee

on 14 May 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Java Performance

반드시 알고 있어야 하는 것들을 정리해보면

String vs StringBuffer, StringBuilder

Collection 클래스들 제대로 사용하기

synchronized 가 뭔지 제대로 알고 쓰기

Reflection 성능 저하 알고 쓰기

Log 꼭 필요할때, 제대로 쓰기

JSON, XML 로 꼭 변환해서 사용해야 하는지 알고 쓰기

Android
OutOfMemoryError
About Java
Java Performance Tuning
Java Performance
Q & A
Tech clinic Q&A Session
2014.05.14
Java Performance Tuning
Java
Java Version
Troubleshooting
Android
Performance Tuning
조*수 자바성능 튜닝에 대해 알고 싶습니다.
정*률 자바성능 튜닝 궁금합니다.
최*열 자바 성능 향상에 대한 튜닝 방법을 배우고 싶습니다.
남*균 성능 개선을 위한 튜닝 방법을 배우고 싶습니다.
임*승 자바 성능 향상에 대한 튜닝 방법을 배우고 싶습니다.
백*현 성능 개선을 위한 튜닝 방법을 배우고 싶습니다.
김*주 Java 성능개선에 관련된 지식을 배우고싶습니다!!
김*진 자바의 성능개선에 필요한 자바튜닝방법에 대해 알고싶습니다.
곽*현 자바 성능 개선을 위한 자세한 내용을 듣고 싶습니다.
박*열 자바 성능 개선을 위한 자세한 내용을 듣고 싶습니다.
기*현 자바 성능 개선을 위한 자세한 내용을 듣고 싶습니다.
정*혜 자바성능을 향상시킬 수 있는 방법에 어떤 것들이 있는지 알고싶습니다.
박*연 성능개선을 위한 방법을 자세히 알고 싶습니다.
이*근 기대됩니다.
박*훈 성능관리 솔루션 개발자로서 관심이 많습니다. 좋은 내용 공유해 주셔서 미리 감사 드립니다.
음... 그건...
일단 이거 보시고 이야기를...
Java Coding Style
곽*석 효율적인 코딩습관에 대해서 알고싶습니다
김*연 평소 JAVA 성능 및 튜닝에 대해 관심을 갖고 있었습니다.
실무에서 사용되고 활용 할 수 있는 성능을 위해 고려할 점과 자바 튜닝 방법을 듣고 싶습니다.
손*선 자바성능을 향상시킬 수 있는 개발방법에대해서 알고싶습니다.
김*정 자바 성능을 고려하지 않은 코드의 위험 사례에 대해서 알고 싶습니다.
장*정 성능을 위해 개발시 고려해야 할 점에 대해 알고싶습니다.
이*환 성능에 도움이 되는 코딩습관과 효과적으로
주석
을 작성하는 노하우(?)에 대해서 듣고 싶습니다.
최*호 자바의 코딩 스타일과 성능을 고려한 프로그램 방법에 대해서 알고 싶습니다.
구*운 자바 성능과 코딩 스타일에 관련된 정보를 듣고 싶습니다.
음... 이것도...
책에 기본적으로 다 설명되어 있으나...
Performance Tuning Process
최*정 실무에서 성능튜닝을 위해 잡은 목표 및 분석, 튜닝시 발생된
문제점들 그리고 어떤 결과가 나왔는지까지 실 사례에 대한 이야기를 듣고싶습니다.
황*엽 기대 성능 수치를 설정하는 것 부터 성능 튜닝 완성까지,
실무에서 경험하신 성능 튜닝 과정에 대해서 들어보고 싶습니다.
목표 설정설명 : 30분 소요
(그 전에 성능에 대한 설명 1시간 소요)

분석 설명 : 24시간이 모자라 ~~~

튜닝시 발생된 문제점들 : 이것도 24시간이 ...

실사례 : 케바케...
Optimizing
김*진 자바환경에서 최적화 기법에 대해서 배워보고 싶습니다.
윤* java 성능저하를 파악할수있는 방법 및 튜닝 사례가 듣고싶습니다.
남*원 실무에 적용한 사례 위주의 튜닝 방법을 알고 싶습니다.
튜닝을 하기 위해서는 툴을 사용해야 함.
Profiling Tool => 개발자용
YourKit, JProfiler, JProbe, ...
APM => 시스템 운영자 및 개발자용
dynaTrace, WebTune, Pharos, ...

여러분들의 회사에 이 툴이 없다면,사달라고 하세요.
개발자라면 이클립스/Intelli J 보다 더 끼고 살아야 합니다.
Java Memory
정*민 자바의신 저자님의 실무에서의 JDK8활용과 성능튜닝이야기를 듣고 싶습니다.
박*영 JDK 6, 7과 JDK 8에서의 성능 개선 팁에 대해 듣고 싶습니다.
버전에 따른 차이는 아래 링크 참조
JDK 7 : http://www.oracle.com/technetwork/java/javase/jdk7-relnotes-418459.html
JDK 8 : http://www.oracle.com/technetwork/java/javase/8-whats-new-2157071.html
최*태 자바에 대한 심화된 내용을 배우고 싶습니다.
정*진 자바에 대한 심화된 내용을 배우고 싶습니다.
김*희 자바 관련한 정보를 자세히 들어보고 싶습니다.
박*애 자바 관련한 유익한 정보를 배우고 싶습니다.
주*규 전문가의 입장에서의 자바에 대한 의견을 듣고 싶습니다.
김*정 자바의 심화된 내용과 성능을 위해 개발시 고려해야할 점들도 알고싶습니다.
과연 자바에 대한 심화 내용이 뭘까요?

아주 어려운 질문입니다.

이렇게 어려운 질문은 되도록이면 자제해 주세요.

질문은 조금 더 직설적으로 디테일하게 부탁드립니다.
박*규 메모리 관리 등 성능과 관련된 많은 정보 들어보고 싶습니다.
Java GC Collectors

Serial GC

Parallel GC

ParallelOldGC

Concurrent Mark Sweep (CMS) Collector

G1 Garbage Collector

자세한 내용은
http://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html
참조

신*철 자바 웹애플리케이션(톰캣, 스프링 기반)에서
OOM발생 시 우선 체크 포인트와 실사례에 기반한
OOM발생을 유발시킬 수 있는 잘못된 코딩 사례를 소개해주세요.
OOM 이 아니라 OOME (OutOfMemoryError) 입니다.

OOME가 발생하면 JVM 이 멈추거나 프로세스가 Die

Heap Dump 를 떠서 분석하는 것이 답

static 잘못쓰거나 본인이 직접 Cache 를 만든다고 하다가 발생하기 쉬움

Session 관리 잘못해서 발생할 수도 있음
이*미 제가 운영하고 있는 안드로이드 앱의 성능을 향상시키고자 합니다.
이*기 안드로이드 어플 성능 개선에 필요한 자바 튜닝 이야기를 듣고 싶습니다.
안드로이드 성능 분석 툴들
AT&T ARO
Traceview (분석결과 믿기 힘듦)
Systrace
Tracer for OpenGL ES

코드 분석 툴
Lint

최적화 툴
ProGuard
그리고 "주석"
메소드나 클래스에 대한 설명 주석은 달아주는 습관을 가지는 것이 좋다.

메소드 내에 한줄 주석 (// <-- 요거)은 되도록이면 쓰지 말자.
// 주석이 코드내에 없는 것이 좋은 이유
나중에 쓰려고 주석처리한 코드들은 대부분 나중에 무슨 의미인지도 이해하기 어려울 것이다.

코드가 복잡하니 //뒤에 설명을 다는 것이다. 누가봐도 이해하기 쉬운 코드를 작성하자. 그러려면,
패턴도 공부해야하고,
리펙토링도 몸에 배어 있어야하고,
다른 사람의 코드도 자주 봐야하고,
자신의 코드도 동료들에게 자주 리뷰 받아야하고,
JDK 및 오픈소스 코드를 열어 훌륭한 개발자들이 작성한 코드를 자주 접해야 !!!
튜닝 기본 프로세스
1. 목표 설정
2. 부하 측정 or 운영 모니터링
3. 결과 분석 및 튜닝
4. 2~3 단계 지속 실시
5. 결과 정리 및 마무리
튜닝 기본 프로세스
1. 목표 설정
Access log 등 분석 / 사용량을 분석하여 목표 설정
2. 부하 측정 or 운영 모니터링
3. 결과 분석 및 튜닝
4. 2~3 단계 지속 실시
5. 결과 정리 및 마무리
튜닝 기본 프로세스
1. 목표 설정
2. 부하 측정 or 운영 모니터링
부하툴(로드러너, nGrinder, JMeter, ...)
로 부하를 가하거나
APM(dynaTrace, WebTune, Pharos, Jennifer,...)
으로 운영상황 모니터링
3. 결과 분석 및 튜닝
4. 2~3 단계 지속 실시
5. 결과 정리 및 마무리

튜닝 기본 프로세스
1. 목표 설정
2. 부하 측정 or 운영 모니터링
3. 결과 분석 및 튜닝
조금 있다가 설명

4. 2~3 단계 지속 실시
5. 결과 정리 및 마무리
튜닝 기본 프로세스
1. 목표 설정
2. 부하 측정 or 운영 모니터링
3. 결과 분석 및 튜닝
4. 2~3 단계 지속 실시
마음에 들 때 까지
5. 결과 정리 및 마무리
튜닝 기본 프로세스
1. 목표 설정
2. 부하 측정 or 운영 모니터링
3. 결과 분석 및 튜닝
4. 2~3 단계 지속 실시
5. 결과 정리 및 마무리
위키, PPT 등 권장
변경 전, 변경 후 위주로 정리

튜닝의 기본 법칙
하나만 보지 말아라.
큰 놈을 없애라.
깊게 알아야 한다.
결과 공유는 선택이 아닌 필수 !
자세한건 여기 잘 적어놨어요.
왜 안드로이드 앱이 느릴까요?

어디가 느린건가요?

얼마나 메모리를 사용하는지 보셨나요?

네트워크는요?
"The difference between a tolerable programmer and
a great programmer
is not how many programming languages they know, and it’s not whether they prefer Python or Java.

It’s whether they
can communicate their ideas
... By
writing clear comments and technical specs
, they let other programmers understand their code, which means other programmers can use and work with their code instead of rewriting it.

Absent this, their code is worthless.

By
writing clear technical documentation for end users
, they allow people to figure out what their code is supposed to do, which is the only way those users can see the value in their code."

- Joel Spolsky
Avram Joel Spolsky
(born 1965) is a software engineer and writer.

He is the author of Joel on Software, a blog on software development.

He was a Program Manager on the
Microsoft Excel team
between 1991 and 1994.

He later founded Fog Creek Software in 2000 and launched the Joel on Software blog.

In 2008, he launched the now-successful
Stack Overflow
programmer Q&A site in collaboration with Jeff Atwood.

Using the Stack Exchange software product which powers Stack Overflow, The Stack Exchange Network now hosts over 100 Q&A sites.

In 2011, Spolsky launched
Trello
, an online project management tool inspired by Kanban methodology.
Q & A
Study !
English !
English !
English !
프로그래밍 언어 공부는 눈으로
하는것이 아닙니다.

머리와 손가락이 익힐때 까지 !
1~8년차까지는 한우물만 파세요.

"으리"로
IT 를 떠나기 전까지는
기술에서 손 떼지 마세요.
아메으리카노 10잔 마실 가격으로 책 사서 공부하세요. PDF로 굽거나 제본해서 보지 마시고...
자바 버전에 큰 성능 개선팁은 없으나
JDK 7
Fork - Join 추가
IO 부분 변경
JDK 8
Lambda expression (성능 비교는 아직...)
Parallel Array Sorting (Using Fork-Join)
Perm generation is removed !

JDK7부터 새로운 GC 방식인 G1 이 추가 되었는데, 아직도 안정화 단계라고 판단됨.

JDK8로 전환은 앞으로 1년 뒤에 하는 것을 권장함.
Full transcript