2010-09-24 15 views

Antwort

-1

Sieht aus wie Sie suchen, ist ein Profiler. (zum Beispiel jProfiler oder für Open Source: http://java-source.net/open-source/profilers)

+0

Danke, ich kann diese Option in jprofiler nicht finden – alex543

+2

Könnten Sie jeden Profiler zeigen, die eine Option haben, um unbegrenzten Speicherplatz zu erkunden. Nach dem, was ich lerne, erkunden die meisten nur den Haufen, nicht den Dauerraum. –

10

Vielleicht haben Sie eine große Code-Basis oder internieren viele Strings.

Versuchen jmap:

jmap -permstat <pid> 

(Hinweis: die permstat Option ist in Windows nicht verfügbar)

Beispiel:

$ jmap -permstat 22982 
Attaching to process ID 22982, please wait... 
Debugger attached successfully. 
Server compiler detected. 
JVM version is 17.0-b16 
100691 intern Strings occupying 5641096 bytes. 
finding class loader instances ..Finding object size using Printezis bits and skipping over... 
done. 
computing per loader stat ..done. 
please wait.. computing liveness..done. 
class_loader classes bytes parent_loader alive? type 

<bootstrap>  303  1355992 null   live <internal> 
0xdd159fe8  9  94104 0xdd153c30  live sun/misc/[email protected] 
0xdd153c30  0  0   null   live sun/misc/[email protected] 

total = 3  312  1450096  N/A   alive=3, dead=0  N/A 

Sie können auch versuchen, den Heap in eine Datei Dumping und Dann laden Sie es in Eclipse Memory Analyser, die Ihnen nützliche Informationen wie einen Leckverdächtigen Bericht und Dominator Tree geben wird.

jmap -dump:format=b,file=heap.bin 22982 

Falls erforderlich, können Sie mithilfe der -XX:MaxPermSize JVM-Option Ihre PermGen Raum erhöhen.

+1

Option "permstat" ist jetzt unter Windows verfügbar. Java Version "1.6.0_31" Java (TM) SE Laufzeitumgebung (Build 1.6.0_31-b05) Java HotSpot (TM) 64-Bit Server VM (Build 20.6-b01, gemischter Modus) – Sydney

Verwandte Themen