1
2
3
4
5
6
7
8
9
10
11
12
13
|
String s1 =
"小金子(aub)"
;
String s2 =
"小金子(aub)"
;
String s3 =
"小金子"
+
"(aub)"
;
String s4 =
new
String(
"小金子(aub)"
);
String s5 =
"小金子"
+
new
String(
"(aub)"
);
String s6 = s4.intern();
System.out.println(
"s1 == s2: "
+ (s1 == s2));
//true;
System.out.println(
"s1 == s3: "
+ (s1 == s3));
//true;
System.out.println(
"s2 == s3: "
+ (s2 == s3));
//true;
System.out.println(
"s1 == s4: "
+ (s1 == s4));
//false;
System.out.println(
"s1 == s5: "
+ (s1 == s5));
//false;
System.out.println(
"s4 == s5: "
+ (s4 == s5));
//false;
System.out.println(
"s1 == s6: "
+ (s1 == s6));
//true;
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
public
class
JvmStackOOM {
private
int
stackLength =
1
;
public
void
execute() {
try
{
stackLeak();
}
catch
(Throwable e) {
System.out.println(
"stackLength : "
+ stackLength);
e.printStackTrace();
}
}
private
void
stackLeak() {
stackLength++;
stackLeak();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
public
class
JvmRuntimeConstantPoolOOM {
private
int
runtimeConstantCount =
1
;
public
void
execute() {
try
{
runtimeConstantLeak();
}
catch
(Throwable e) {
System.out.println(
"runtimeConstantCount : "
+ runtimeConstantCount);
e.printStackTrace();
}
}
private
void
runtimeConstantLeak() {
List<String> list =
new
ArrayList<String>();
while
(
true
) {
list.add(String.valueOf(runtimeConstantCount++).intern());
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
public
class
JvmHeapOOM {
private
int
bojectCount =
1
;
public
void
execute() {
try
{
heapLeak();
}
catch
(Throwable e) {
System.out.println(
"bojectCount : "
+ bojectCount);
e.printStackTrace();
}
}
private
void
heapLeak() {
List<OOMObject> list =
new
ArrayList<OOMObject>();
while
(
true
) {
list.add(
new
OOMObject());
bojectCount++;
}
}
private
class
OOMObject {
}
}
|
C:\Users\Administrator>jps -lmv 1796 -Dosgi.requiredJavaVersion=1.5 -Xms40m -Xmx512m -XX:MaxPermSize=256m 7340 sun.tools.jps.Jps -lmv -Denv.class.path=.;D:\DevTools\VM\jdk1.6.0_31\\lib\dt.jar;D:\DevTools\VM\jdk1.6.0_31\\lib\tools.jar; -Dapplication.home=D:\DevTools\VM\jdk1.6.0_31 -Xms8m
C:\Users\Administrator>jinfo 1796
Jstack(Stack Trace for Java):JVM堆栈跟踪工具
C:\Users\Administrator>jstack 1796 2013-05-22 11:42:38 Full thread dump Java HotSpot(TM) Client VM (20.6-b01 mixed mode): "Worker-30" prio=6 tid=0x06514c00 nid=0x1018 in Object.wait() [0x056af000] java.lang.Thread.State: TIMED_WAITING (on object monitor) at java.lang.Object.wait(Native Method) at org.eclipse.core.internal.jobs.WorkerPool.sleep(WorkerPool.java:188) - locked <0x1ad84a90> (a org.eclipse.core.internal.jobs.WorkerPool) at org.eclipse.core.internal.jobs.WorkerPool.startJob(WorkerPool.java:220) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:50) ...... ...... ...... ......
C:\Users\Administrator>jstat -gccapacity 1796 1s 5 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 96 13632.0 174720.0 40896.0 4032.0 4032.0 32832.0 27328.0 349568.0 81684.0 81684.0 12288.0 262144.0 80640.0 80640.0 42 97
C:\Users\Administrator>jstat -gcutil 1796 1s 5 S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632 0.00 0.00 0.52 53.35 99.77 42 0.513 99 38.119 38.632
jmap -dump:live,format=b,file=data.hprof 1796
jhat data.hprof