JavaとJVMはノートを深く理解します
74630 ワード
1. HashCode
hashCode , hashCode 。
hashCode , , , equals()
equals() true, hashCode
equals() false, hashCode
hashcode , equals false;
hashcode , equals 。
equals() , hashCode , equals() hashCode()
hashCode , HashSet、HashMap HashTable
Java , , , :
-> -> 、 ->
,
Java :
( > ), ,
, , , , , ,
, ; , , 。
2.JVM
native ,
native , undefined
Java
, 。
: 、 、 、
, , , ,
Java
---
1、 ( : 、 、 )、 、
2、
3.Hash
, , 。
Hash , , ,
eg:
13980593357
15828662334
13409821234
13890583472
Hash " " , O(1)
:
Hash
f:key --> address
key
:
1. Hash
2. Hash (hash , ) Hash
Hash , " " , " " Hash , Hash
4.Java : , , ( ) , JVM , !!!
--- JVM ---
JVM
--- , ( ) , 8
, , ,
, , ( )
:!!! --- JVM
1. ,
2. ( )
3. , (JVM ) , , ( )
5. --- JVM : Young Gen, Old Gen
Young Gen :Eden Survivor (from to)
Eden Survivor 8:1 -XX:SurvivorRation
-Xmx -Xms
Young Gen -Xmn
-XX:NewSize -XX:MaxNewSize
, 1/3 1/4, 。
Minor GC --- ,Java , Minor GC , ,
GC ( , , , , )
Full GC --- GC, Full GC ,
Eden ( ), Eden Minor GC,
Minor GC , , Survivor , Survivor Minor GC, 1 ,
( 15 ), ,
, Full GC
Stack -Xss
-XX:PermSize -XX:MaxPermSize
6.JVM class --- JVM class , , , Java
: , JVM
JVM JVM :
(1) : Class ;
(2) : JRE ;
(a) : Class , JVM ;
(b) : , ;
(c) : ;
(3) : , ,
:
1.
, , , ,
, , ,
2.
1. ,
2. , ( : , ),
3. static ,
4.static , ( , ,Class.forName )
7. :
^ $ 。 :^abc abc ( :abcd,abcefd),abc$ abc ( :);^abc$ abc(abc ,abcabc ) ;abc abc
* + ? 0 ,1 ,0 1 。 :abc* 0 abc,
*+? ,abc{2} ab c, abcc,dfdabccccc ;abc{2}$ abcc , 343abcc
abc{1,2} ab 1 2 c;
abc{3,} ab 3 c; {,3}
| ab|cd ab cd;
.
"[ab]": "a" "b"( "a|b");
"[a-d]": 'a' 'd' ( "a|b|c|d" "[abcd]");
"^[a-zA-Z]": ;
"[0-9]%": ;
",[a-zA-Z0-9]$": 。
, : , , , ~ 。
: ((^[0-9]+[~]?)?|^([0-9]+[,])+)[0-9]+$
8.JVM GC ---- JVM :
http://www.cnblogs.com/zhguang/tag/Java/
http://blog.csdn.net/column/details/javavirtualmachine.html
http://blog.csdn.net/eric_sunah/article/details/7870906
1.
1.
, , +1, , -1, 0
:
!!!
2. --- JVM GC
GC Roots , , ,
GC Roots ( :GC Roots ),
Java GC Roots :
1. ( )
2.
3.
4. JNI(Native )
2.JVM
1. :
(Eden + 2 Survivor )、 、
Eden , Minor GC Survivor1 , Minor GC Survivor2 ,
( )
, 、 、 ,
GC , , finalize()
GC JVM ,System.gc() Runtime.gc() JVM GC , JVM GC
, OutOfMemoryError
2.GC ?
---
--- GC Roots , GC Roots , , GC Roots , ,
, GC Roots , , , , , ,
--- GC Roots
1. ( )
2.
3.
4. (Native )
--- , 0,
, ,
3. : :http://www.cnblogs.com/sunniest/p/4575144.html
, 2 :
1. ( )
2. ,
1. - :
GC Roots , , , ,
: ,
:GC ,
2. :
。 : ; ;
2 , , , , ,
, , , , ,
:
: ,
3. - :
- , , ,
4. :
。 、 、 ,
: --- Minor GC, : Serial、PraNew、Parallel Scavenge
1. ,
2. 8:1:1 eden survivor(survivor0,survivor1) 。 Eden , Survivor ( )。 Eden 。 eden survivor0 , eden , survivor0 , eden survivor0 survivor1 , eden survivor0 , survivor0 , survivor0 survivor1 , survivor1 , 。
Eden : Survivor0:Survivor1 = 8:1:1
3. survivor1 eden survivor0 , 。 Full GC, 、
4. GC Minor GC,MinorGC ( Eden )
: --- Full GC :Serial Old、Parallel Old、CMS
1. N , 。 , 。
2. ( 1:2), Major GC Full GC,Full GC , , 。
: --- , Java 、 。
4.GC ---
Serial ---
, , :
Serial Old --- -
ParNew ---
Serial , CPU Serial
Parallel Scavenge ---
, , CPU。 99%, = /( +GC )。
Parallel Old ( - )
Parallel Scavenge , ,
CMS ---
、 , GC ,cpu , , , cpu
5.GC
Minor GC: Eden , Minor GC ---
--- Eden ,
---
--- 、 , Eden
Full GC: , 、 、
--- , Minor GC
--- Full GC
--- JVM , Full GC
Full GC :
1.
2.
3.System.gc()
4. GC Heap
6. :
1. (HashMap、Vector), ,
2. 、 、 、IO close(), GC
3. ,
9.JVM http://www.infoq.com/cn/articles/java-memory-model-1
: ( 、 ) , 、
JVM ,Java , , ,
, , , ,
JMM(Java ,Java Memory Model ) Java 、 。
JMM : , (local memory),
/ , ,
Java :
, , , ,
( 、 ) , , ,
,
:
( Java ,volatile , ——
, , , volatile )。
,
8 :
Java 8
1.lock( )
,
2.unlock( )
, ,
3.read( )
, , load
4.load( )
, read
5.use( )
, , ,
6.assign( )
, ,
7.store( )
, , write
8.write( )
, store
8 :
1. read load、store write , , ( :read load 、store write )
2. assign , : ,
3. ( assign )
4. " ", (load assign) ,
: use store , assign load
5. lock , lock ( ),
lock , unlock ,
6. lock , , , load assign
7. lock , unlock , unlock
8. unlock , ( store write )
volatile : ---
1.
2.
?
、 、
10.Java
Java , Java , , 。
, 。
:
1:
Java API , , Java , : 、
java.lang.Class , 、 (getConstructor、getFiled、getMethod)
getDeclaredXXX , getDeclaredXXX , 。
Constructor、Field Method 、 。 。
2: , Java
Java ,
Java , API
:
clazz.setAccessible(true) --- private private
:
:
, 。 , 。
, 、 、 、 。 ,
, 。
:
JDK5 , 。
, , InvocationHandler ,
, InvocationHandler invoke() ,
invoke() 、 Method ,invoke() 。
--- AspectJ AOP AOP
11.
-Xms , 1/64(<1G)
-Xmx
-Xmn (eden+ 2 survivor space),
= + +
, , 。 ,Sun 3/8
-XX:SurvivorRation Eden Survivor , 8, Survivor Eden 2:8, Survivor 1/10
-Xss , 256K
-XX:PermSize ( ) , 1/64
-XX:MaxPermSize ( ) , 1/4
-XX:+UseParallelGC , GC
eg:
-vmargs -Xms128M -Xmx512M -XX:PermSize=64M -XX:MaxPermSize=256M
-vmargs VM , JVM
-Xms128m JVM
-Xmx512m JVM ,
-XX:PermSize=64M JVM
-XX:MaxPermSize=128M JVM ,
:
Java , , 。 Java 。”“ JVM (Non-heap memory)”。
JVM : 。 Java , ; JVM ,
,JVM 、 ( 、 )
:
1.
2.
12.JVM
(JVM + )
:
GC , GC, , GC
:
: 、 static 、 、
( 、 )
static
field
final
: ( ) class ,
:
Class getName ,
:
-XX:PermSize , 16M
-XX:MaxPermSize , 64M
:
, OutOfMemoryError
GC :
:
, -XX:PermSize==-XX:MaxPermSize, 256M
eg:
-XX:PermSize=256M
-XX:MaxPermSize=256M
static , ( , , )
, Class ( Class ,Class )
:
:
( , , )
:
new
:
-Xmx: , 1/4 1G
-Xms: , 1/64 1G
-XX:MinHeapFreeRatio, 40% , -Xmx
-XX:MaxHeapFreeRatio, 70% , -Xms
:
,-Xmx -Xms , , !!!
:
OutOfMemoryError:Java heap space
:
:
Eden + from + to from to
-Xmn:
-XX:SurvivorRation : Eden:from(to) , 8:1 : eden:from:to = 8:1:1
:
2 :
:-XX:PretenureSizeThreshold( : )
:
:
-Xmx==-Xms
eg:
-Xms2048m
-Xmx2048m
-Xmn512m
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=15
,-Xms==-Xmx==2048m, -Xmn==512m, , 2048-512==1536m, ,
, : ==1:3, , -XX:MaxTenuringThreshold=15( ), 15
Eden 2 Survivor(from+to), Eden:from:to==8:1:1
1. Eden ( -XX:PretenureSizeThreshold, )
2. Eden , from ( : from , ), Eden
: Eden , Eden , Eden from , Eden , Eden
3. Eden , Eden , Eden from to( , to , ), Eden from ;
4) , ( , +1), , 15 ( :-XX:MaxTenuringThreshold ),
5) , Full GC( , )
:
:
, ( ) , 、 ,
, , , ,
:
: 8 、 , ,
:
-Xss: , 1m
eg:
-Xss1m
:
StackOverFlowError
eg:
( )
javac
OutOfMemoryError: , ,
:
,
C ( )
: , 。
: , , ( ) ,
, , , 。
:
, , 。
, ( ) Java
Java 3
:Mark Word( 32 64 JVM 32bit 64bit), :
hashCode
GC
: 、 、 JDK1.6 , Synchronized ReentrantLock ,
Synchronized , Synchronized, ReentrantLock , 。
:
JVM ( Class )
JVM 8 , ,
:
1.Mark Word ,
2. , ,JVM Java ,
3. ( )
boolean 1
byte 1
short 2
char 2
int 4
float 4
long 8
double 8
32 64 4bit 8bit
2 :
1.
:
( : , )
:
, , ,
GC :
Serial、ParNew
2.
:
:
JVM , , , new ,
GC :
CMS
:
1.2 , Java
2.Java , GC " - " " - "( " - "), ,
:5
1.
JVM new , 、
new , ,
2.
3.
4.
5.
( 3 , , )
13.JVM GC
1.
:GC
:
:
PC , GC
2.
1.
:
, , +1, , -1
:
1. , ,
2.
2. ( )
:
(GC Root) , ,
GC Root : ( )
1.Java
2. , +
3. 3
: A a = new A();//a
。 , 。 ,Java OutOfMemoryError , ,
: , , , ( )
A a = new A();
SoftReferencesr = new SoftReference(a); //
: , ,
4.GC
1. - ---
2. - ( - ) ---
3. ---
- ---
:
, , , ( : )
:
:
, ( : ),
( : ; : )
:
, , " "
- ( - ) ---
:
, , ( )( - ), , 。
:
( )
:
, ,
( : ; : )
:
:
, , " "
---
:
, , ( ) , ( )
:
( )
( ): 98% " " ,
:
:
, , " ", 《 JVM 》
: ,
14. Set --- HashSet、TreeSet、LinkedHashSet -- , Iterator foreach
:http://blog.csdn.net/speedme/article/details/22661671
HashSet --- , , add() hashcode equals, HashSet , , null
:
HashSet: , 。 , hashCode , , equals
TreeSet --- , , add() Comparable, compareTo() , TreeSet Comparable, compareTo()
,
2 : 、
TreeSet equals false, CompareTo 0
CompareTo(Object obj) , 。
Java Comparable , compareTo(Object obj) , , 。
obj1.compareTo(obj2) 0, , , obj1 obj2, , obj1 obj2。
equals true, compareTo 0
, , , Comparator , int compare(T o1,T o2)
2 :
: , TreeSet comparable compareTo(Object obj)
。( , comparable )
: , comparator , compare(Object o1,Object o2) , TreeSet
, , ,
LinkedHashSet --- HashSet , ,
HashSet : , hashCode(), hash , hash
hash , hashCode , , ,
hash , equals() ,
false .
true .
HashSet
* hashCode() equals()
* equals()
* hashCode() ,
TreeSet : ,add() compareTo() , ---
:http://blog.csdn.net/jinhuoxingkong/article/details/51191106
TreeSet , add() ( 、 ), ,
Integer String TreeSet , , Comparable , compareTo(),
compare() , TreeSet , : 。 、 , 、 。
TreeSet , Comparable
* implement Comparable
* compareTo()
* , ,
TreeSet 2 :
1. Comparable , compareTo() ----
2. TreeSet Comparator , compare() ----
* a. (Comparable)
* TreeSet add() Comparable
* compareTo()
* compareTo()
* b. (Comparator)
* TreeSet Comparator
* Comparator , TreeSet
* add() Comparator compare()
* compare , compare
* c.
* TreeSet , Comparable ( ClassCastException)
* TreeSet Comparator, Comparator
15. Map --- HashMap、TreeMap
:http://blog.csdn.net/chenssy/article/details/26668941
HashMap
key hashCode ,
TreeMap
, key , Comparator ,
TreeMap key , value
value , TreeMap EntrySet list, Collections.sort -- :http://blog.csdn.net/liuxiao723846/article/details/50454622
http://blog.csdn.net/xiaoyu714543065/article/details/38519817
eg:value String , value
public static Map sortTreeMapByValue(Map map){
List list = new ArrayList<>(map.entrySet());
Collections.sort(list, new Comparator() {
//
@Override
public int compare(Map.Entry o1, Map.Entry o2) {
return o1.getValue().toString().compareTo(o2.getValue().toString());
}
});
for (Map.Entry e: list) {
System.out.println(e.getKey()+":"+e.getValue());
}
return map;
}
16. ThreadLocal
ThreadLocal ,ThreadLocal , ,
3 :
void set(T value)、T get() T initialValue()
:
, , , ThreadLocal
:
ThreadLocal ?
ThreadLocal Map, ,Map key ,value
eg:
public class JavaTest {
// Integer , ThreadLocal initialValue() ,
public static final ThreadLocal local = new ThreadLocal() {
@Override
protected Integer initialValue() {
return 0;
}
};
public static void main(String[] args) throws InterruptedException {
Thread[] threads = new Thread[5];// 5
for (int j = 0; j < 5; j++) {
threads[j] = new Thread(new Runnable() {
@Override
public void run() {
// , 5
int num = local.get();// , thread , initialValue
for (int i = 0; i < 5; i++) {
num++;
}
//
local.set(num);
System.out.println(Thread.currentThread().getName() + " : "
+ local.get());
}
}, "Thread-" + j);
}
for (Thread thread : threads) {//
thread.start();
}
}
}
:
Thread-0 : 5
Thread-4 : 5
Thread-2 : 5
Thread-1 : 5
Thread-3 : 5
, 5, ,
17.
Java 4 ,
@Retention ( )
:
RetentionPolicy.SOURCE: java ,
RetentionPolicy.CLASS: class , VM ( )
RetentionPolicy.RUNTIME: ,VM , ---
@Target
:
ElementType.CONSTRUCTOR:
ElementType.FIELD: 、 、 ( enum )
ElementType.LOCAL_VARIABLE:
ElementType.METHOD:
ElementType.PACKAGE:
ElementType.PARAMETER:
ElementType.TYPE: 、 ( ) enum
@Documented JavaDoc
@Inheried
:
eg:
--- MyAnnotation
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
*
*
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD, ElementType.TYPE})
public @interface MyAnnotation {
//
String color();
String value() default " xxx";//
int[] array() default {1,2,3};
Gender gender() default Gender.MAN; //
//
MetaAnnotation metaAnnotation() default @MetaAnnotation(birthday = " 1988-2-18");
}
--- Gender
public enum Gender{
MAN{
public String getName(){
return " ";
}
},
WOMEN{
public String getName(){
return " ";
}
};
}
--- MetaAnnotation
public @interface MetaAnnotation{
String birthday();
}
:
/**
*
* Created by hetiewei on 2016/10/12.
*/
@MyAnnotation(metaAnnotation = @MetaAnnotation(birthday = " 1991-2-27"),
color = "red", array = {23, 26 })
public class Test {
public static void main(String args[]){
// Test @MyAnnotation
if (Test.class.isAnnotationPresent(MyAnnotation.class)){
// ,
MyAnnotation annotation = Test.class.getAnnotation(MyAnnotation.class);
System.out.println(annotation);
//
//1.
System.out.println(annotation.color());
System.out.println(annotation.value());
//2.
int[] arrs = annotation.array();
System.out.println(arrs.toString());
//3.
Gender gender = annotation.gender();
System.out.println(" :"+gender);
//4.
MetaAnnotation meta = annotation.metaAnnotation();
System.out.println(meta.birthday());
}
}
}
18. , Field, , ,
:
(1). , enum java.lang.Enum , Object 。 java.lang.Enum java.lang.Serializable java.lang.Comparable 。
(2). enum , final , 。
(3). private , , private ; , private 。
(4). , 。 , public static final , 。
values ,
(5)
name() ,toString() --- , toString()
ordinal() --- , 0
public static T valueOf(Class enumType, String name)
--- , ,
eg:
public enum SeasonEnum{
// 4
SPRING,SUMMER,FALL,WINTER;
}
:
1. (,) ,
2.
3. EnumClass.variable eg: SeasonEnum.SPRING
4. switch
5. EnumClass[] enums = EnumClass.values();
Field、
1. , , Field,
19.
1.HashMap + , hash , ,
hash , : , ,
:
+ Entry[] , Key
key ( ), key
hash , put get , , K/V put() , hashCode() hash bucket ,
,HashMap bucket ( , 2 )。
, K, hashCode() bucket , equals() 。
,HashMap , Java8 , bucket (, 8 ),
,
2.HashSet HashMap , : , :
HashSet , ,
hash , hashCode equals , hashSet, hashCode , equals
?
1> : hashCode() ( )
2> : equals 。
: hash , , false; hash , , , true, false。
3.TreeSet , , Comparable , CompareTo()
2
1. , Comparable , compareTo()
2. ThreeSet Comparator
20.
:
http://www.codeceo.com/article/java-thread-pool-deep-learn.html
http://www.codeceo.com/article/java-threadpoolexecutor.html
1. :
ThreadPoolExecutor extends AbstractExecutorService implement ExecutorService 4
:
corePoolSize:
, , 0, , , corePoolSize , 、
maxPoolSize:
keepAliveTime:
, corePoolSize ,keepAliveTime , corePoolSize, corePoolSize , keepAliveTime, , corePoolSize
unit: keepAliveTime , 7 , TimeUnit 7
TimeUnit.DAYS; //
TimeUnit.HOURS; //
TimeUnit.MINUTES; //
TimeUnit.SECONDS; //
TimeUnit.MILLISECONDS; //
TimeUnit.MICROSECONDS; //
TimeUnit.NANOSECONDS; //
workQueue: ,
:
ArrayBlockingQueue
LinkedBlockingQueue --- ,
SynchronousQueue
PriorityBlockingQueue
threadFactory: ,
handler: ,
4 :
ThreadPoolExecutor.AbortPolicy: RejectedExecutionException 。
ThreadPoolExecutor.DiscardPolicy: , 。
ThreadPoolExecutor.DiscardOldestPolicy: , ( )
ThreadPoolExecutor.CallerRunsPolicy:
2. :
1. :
ThreadPoolExecutor Volatile runState , volatile
4 :
volatile int runState;
static final int RUNNING = 0;
static final int SHUTDOWN = 1;
static final int STOP = 2;
static final int TERMINATED = 3;
:
1. , , RUNNING
2. shutdown() , SHUTDOWN , ,
3. shutdownNow() , STOP , ,
4. SHUTDOWN STOP , , , TERMINATED
2. :
BlockingQueue , execute(Runnable ) ,
21.Java
---
Java javac , JVM , 、
JVM
Bootstrap ClassLoader , Java (jre/lib/rt.jar), C++ , java.lang.ClassLoader
Extension ClassLoader , Java (jre/ext/*.jar), Java 。 Java
System ClassLoader , Java (classpath) Java ,
Java , ClassLoader.getSystemClassLoader()
java.lang.ClassLoader ,
Java 3 :
:
, ,
:
,
:
,
3 :
:
:( 、 、 )
:
:
:
: JVM 、
: ,
:
:
:
1.JVM
2. :
1. ,
2. , ,
3. static ,
java.lang.ClassLoader
, , Java , :java.lang.Class
ClassLoader :
getParent()
loadClass(name) name , java.lang.Class
findClass(name) name , java.lang.Class
findLoadedClass(name) name , java.lang.Class
resolveClass(Class> c) Java
Java
( ) ( )
:
--> --> Class
:
:
: 1. Class
2. , ,
: Java ,eg:
:
: , ,
:
--- static , :final !!!
1. --- static
2. ( : ,8 eg: static int a = 10, a 0, , 10 )
3. final , (eg:final static int a = 10 , a 10)
:
1. :
2. :
:
1. ( ,static , )
2. , (static ,static , )
22.Java
: , , , ,
Java ,
?
1、 。 。
2、 ( Ability )。
3、 , 。
4、 。 , 。
?
1、 , 。
2、 , 。
3、 , 。
4、 。 , , , 。 , 。
23.JVM --- JVM !!! --- !!!
1. , JVM JVM !!!
2. JVM ,
:
http://blog.csdn.net/column/details/14217.html
: --- !!! ---> !!!
、 、 ,
:
, , , , JVM ,
,
:
:
eg: , , ,returnAddress
Java class ,
:
( 0 ), ( static ), 0 this,
this.name ......
:
:http://blog.csdn.net/eric_sunah/article/details/8014865
:
, , ,
A B , B ,
B , , !
:
:
,
:
,
A B
A
B
1. :
2. :
:
1. , , !!!
, PC ,
,
2. !!!
:
, , ,
PC
24.JVM
1.JVM http://blog.csdn.net/eric_sunah/article/details/7862114
1.JVM
-Xms
-Xmx
-Xss
-Xmn
eg:
java -Xmx4096m -Xms4096m -Xmn2g -Xss128k
java -Xmx4g -Xms4g -Xmn2g -Xss128k
JVM 4096M, 4096M(-Xms -Xmx , JVM )
JVM 2G JVM = + +
64m, , 。 , 3/8
128k
JDK5+ 1M, , , , 5000
, , StackOverflow !!! 1:4
-XX:MaxPermSize=64m 64M
-XX:MaxTenuringThreshold=0:
:
1, , 。 Eden Survivor 。
2, :
-XX:NewSize (for 1.3/1.4) ,
-XX:MaxNewSize (for 1.3/1.4) ,
-Xmn
2, :
-XX:PermSize
-XX:MaxPermSize
3, :
-XX:NewRatio( , , )
-XX:+UseConcMarkSweepGC , -XX:NewRatio=4 , -Xmn
4,Eden Survivor
-XX:SurvivorRatio(Eden Survivor ,Eden )
2.GC
--- ,
eg:
-XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC
:
-XX:+UseParallelGC: 。 。 , ,
-XX:ParallelGCThreads=20: , : 。
-XX:+UseParallelOldGC: ,JDK6.0
--- , , ,
eg:
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC
-XX:+UseConcMarkSweepGC: 。 ,-XX:NewRatio=4 , 。 , -Xmn 。
-XX:+UseParNewGC: 。 CMS 。JDK5.0 ,JVM , 。
3.
-Xms:
-Xmx:
-XX:NewSize=n:
-XX:NewRatio=n: 。 : 3, 1:3, 1/4
-XX:SurvivorRatio=n: Eden Survivor 。 Survivor 。 :3, Eden:Survivor=3:2, Survivor 1/5
-XX:MaxPermSize=n:
-XX:+UseSerialGC:
-XX:+UseParallelGC:
-XX:+UseParalledlOldGC:
-XX:+UseConcMarkSweepGC:
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
-XX:ParallelGCThreads=n: CPU 。 。
-XX:MaxGCPauseMillis=n:
-XX:GCTimeRatio=n: 。 1/(1+n)
-XX:+CMSIncrementalMode: 。 CPU 。
-XX:ParallelGCThreads=n: , CPU 。 。
4.
: , ( )。 , 。 , 。
: , Gbit 。 , , 8CPU 。
: , , 。
, 、 ;
, 。 , :
GC
,
: 。 , ,
, 。
、 , 。 , , 。
, , , “ ”, , ,
、 。 “ ”, :
-XX:+UseCMSCompactAtFullCollection: , 。
-XX:CMSFullGCsBeforeCompaction=0: , Full GC ,
2.JVM --- OutOfMemoryError Exception, Throwable
1. --- , , GC , Java heap space
eg:
1. -Xms20m -Xmx20m
2. , GC
public static void main(String[] args) {
headOutOfMemory();
}
/*
* -verbose:gc -XX:+PrintGCDetails -verbose:gc
* -XX:+HeapDumpOnOutOfMemoryError
*
* -Xms20m -Xms20m
*
*/
static void headOutOfMemory() {
long count = 0;
try {
List