1.method area(共享) 2.heap (共享) 3.java stack(非) 4.native method stack(非) 5.program couter register(非) method frame(stack frame)
1.heap // young gen(eden + survivor0 + survivor 2) + old gen. 2.non-heap perm | metaspace 3.off-heap jvm以外的內容
-Xmx -Xms -Xmn //young -XX:NewSize= -XX:MaxNewSize=
java -Xmx xx.x.xx.Appjava
動態訪問對象的屬性和方法。 Class //類 Method //方法,成員函數 Field //字段,成員變量 Constructor //構造函數 private
Field[] fs = getDeclaredFields() for(Field f : fs){ get + "" }web
Introspector. 操做javabean。
單例(無狀態) 池化模式(無狀態) 裝飾 適配器 builder factory 代理模式.
Introspector: //JavaBean 動態訪問對象屬性和方法。 Class // Method // Field // Constructor //
InputStream //read OuputStream //write Reader // Writer //字符流 BufferedInpustStream // BufferedOutputStream // BufferedReader BufferedWriter InputStreamReader ObjectInputStream ObjectOutputStream ByteArrayInputStream ByteArrayOutputStream
ServerSocket ss = new ServerSocket(8888); //阻塞的 while(true){ Socket s = ss.accept(); InputStream is = s.getInputStream(); //阻塞的 while(true){ is.read(buf); } ... }
[java.nio.Buffer] 容器,線性的,有限的. Capacity //容量 limit //限制 position //指針位置 mark //記號(標記) //分配字節緩衝區 ByteBuffer buf = ByteBuffer.allocate(20); // ByteBuffer buf = ByteBuffer.allocateDirect(20); //直接內存(離堆) java.nio.ByteBuffer /\ |--------------java.nio.HeapByteBuffer //堆內存區 |--------------java.nio.DirectByteBuffer //離堆內存區. get() //讀 put() //寫 position() //取出指針位置 position(int ) //設置指針新位置 limit() //設置指針新位置 limit(int l) //設置新limit flip() // 0 <= mark <= position <= limit <= capacity
garbage collection,垃圾回收。 對象回收的條件:沒有任何一個指針可以直接或間接達到的話,就回收了。 Person p = new Person(); Person p2 = p ; p = null ; List<Person> list = new ArrayList<Person>(); list.add(p2); p2 = null ; list.clear();
ByteBuffer.flip()設計模式
java.nio.ByteBuffer中flip、rewind、clear方法的區別jvm
對緩衝區的讀寫操做首先要知道緩衝區的下限、上限和當前位置。下面這些變量的值對Buffer類中的某些操做有着相當重要的做用:函數
1. limit:全部對Buffer讀寫操做都會以limit變量的值做爲上限。ui
2. position:表明對緩衝區進行讀寫時,當前遊標的位置。this
3. capacity:表明緩衝區的最大容量(通常新建一個緩衝區的時候,limit的值和capacity的值默認是相等的)。spa
flip、rewind、clear這三個方法即是用來設置這些值的。設計
clear方法 public final Buffer clear() { position = 0; //重置當前讀寫位置 limit = capacity; mark = -1; //取消標記 return this; }
clear方法將緩衝區清空,通常是在從新寫緩衝區時調用。代理
flip方法
public final Buffer flip() { limit = position; position = 0; mark = -1; return this; }
反轉緩衝區。首先將限制設置爲當前位置,而後將位置設置爲 0。若是已定義了標記,則丟棄該標記。 常與compact方法一塊兒使用。一般狀況下,在準備從緩衝區中讀取數據時調用flip方法。
rewind方法
1public final Buffer rewind() { 2 position = 0; 3 mark = -1; 4 return this; 5}