[bgoug] memory analyzer

17
Eclipse Memory Analyzer Krasimir Semerdzhiev Development Architect / SAP Labs Bulgaria

Upload: evilyeti

Post on 07-Nov-2014

2.064 views

Category:

Technology


0 download

DESCRIPTION

A short introduction of Eclipse Memory analyzer and its basic features.

TRANSCRIPT

Page 1: [BGOUG] Memory analyzer

Eclipse Memory Analyzer

Krasimir Semerdzhiev

Development Architect / SAP Labs Bulgaria

Page 2: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 2

Agenda

Getting started

Get hands dirty

Q&A

Page 3: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 3

Getting startedFew assumptions

You’ve passed beyond “Hello World” in Java

Hello World apps tend not to require too much memory

You’ve gotten an OutOfMemoryError at least once in your life :)

You’re proficient already with Garbage Collection

Attended the previous BGOUG event GC session

Page 4: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 4

Getting startedMemory analyzer basics

Works with heap dumps – live snapshots of:

Page 5: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 5

Getting startedHow to get a heap dump

Non-Interactive

-XX:+HeapDumpOnOutOfMemoryError

On Demand

JDK1.4.2_12+ and -XX:+HeapDumpOnCtrlBreak

JDK6 and JConsole or VisualVM

On IBM VMs-Xdump:system:events=throw,filter=java/lang/OutOfMemoryError,

request=exclusive+prepwalk

More…

http://wiki.eclipse.org/index.php/MemoryAnalyzer#Getting_a_Heap_Dump

Page 6: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 6

Getting startedShallow vs. Retained heap

Shallow heap is the memory consumed by one object

Retained set of X is the set of objects that will be garbage collected if X is garbage

collected

Retained heap of X is the sum of shallow sizes of all objects in the retained set of

X, i.e. memory kept alive by X

Set of elements Retained Set

C

K

C, K

C, F, G, J

K

C, F, G, J, K, I

Page 7: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 7

Getting startedDominator tree

An object x dominates an object y if every path in the object graph from the start (or the root)

node to y must go through x.

In the dominator tree each object is the immediate dominator of its children, so

dependencies between the objects are easily identified.

Page 8: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 8

Getting startedDominator tree

Page 9: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 9

Getting startedJava references – java.lang.ref

Soft reference

GC will try to preserve the object

Will collect it prior to throwing OutOfMemoryError

Weak reference

GC is free to reclaim the object.

Phantom reference

Track object collections

Created Initialized Strongly reachable

Softly reachable

Weakly reachable

Finalized

Phantom reachable

Page 10: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 10

Getting startedGC roots in Java

Keeps the objects in heap from being collected by GC

System Class Finalizer Queue GC handle

JNI Local

JNI Global

Unfinalized Thread stack

ThreadThread block Busy Monitor

Unknown

Unreachable

Page 11: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 11

Getting startedWhat is a leak?

Page 12: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 12

Agenda

Getting started

Get hands dirty

Q&A

Page 13: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 13

Analyze memory consumptionGetting the heap dump: Setup

JConsole refuses to connect

Page 14: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 14

Analyze memory consumption

DEMO

Page 15: [BGOUG] Memory analyzer

© 2011 SAP AG. All rights reserved. 15

How to get involved?

Eclipse Home Page

http://www.eclipse.org/mat/

Forum

eclipse.technology.memory-analyzer

Blog

http://dev.eclipse.org/blogs/memoryanalyzer

Page 16: [BGOUG] Memory analyzer

Questions?

Krasimir Semerdzhiev

[email protected]

Page 17: [BGOUG] Memory analyzer

Thank You!

Krasimir Semerdzhiev

[email protected]