1. 程式人生 > >Java系列筆記(3)

Java系列筆記(3)

目錄

Java垃圾回收概況

  Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作為Java開發者,一般不需要專門編寫記憶體回收和垃圾清理程式碼,對記憶體洩露和溢位的問題,也不需要像C程式設計師那樣戰戰兢兢。這是因為在Java虛擬機器中,存在自動記憶體管理和垃圾清掃機制。概括地說,該機制對JVM(Java Virtual Machine)中的記憶體進行標記,並確定哪些記憶體需要回收,根據一定的回收策略,自動的回收記憶體,永不停息(Nerver Stop)的保證JVM中的記憶體空間,防止出現記憶體洩露和溢位問題。

  關於JVM,需要說明一下的是,目前使用最多的Sun公司的JDK中,自從1999年的JDK1.2開始直至現在仍在廣泛使用的JDK6,其中預設的虛擬機器都是HotSpot。2009年,Oracle收購Sun,加上之前收購的EBA公司,Oracle擁有3大虛擬機器中的兩個:JRockit和HotSpot,Oracle也表明了想要整合兩大虛擬機器的意圖,但是目前在新發布的JDK7中,預設的虛擬機器仍然是HotSpot,因此本文中預設介紹的虛擬機器都是HotSpot,相關機制也主要是指HotSpot的GC機制。

  Java GC機制主要完成3件事:確定哪些記憶體需要回收,確定什麼時候需要執行GC,如何執行GC。經過這麼長時間的發展(事實上,在Java語言出現之前,就有GC機制的存在,如Lisp語言),Java GC機制已經日臻完善,幾乎可以自動的為我們做絕大多數的事情。然而,如果我們從事較大型的應用軟體開發,曾經出現過記憶體優化的需求,就必定要研究Java GC機制。

  學習Java GC機制,可以幫助我們在日常工作中排查各種記憶體溢位或洩露問題,解決效能瓶頸,達到更高的併發量,寫出更高效的程式。

  我們將從4個方面學習Java GC機制,1,記憶體是如何分配的;2,如何保證記憶體不被錯誤回收(即:哪些記憶體需要回收);3,在什麼情況下執行GC以及執行GC的方式;4,如何監控和優化GC機制。

Java記憶體區域

  瞭解Java GC機制,必須先清楚在JVM中記憶體區域的劃分。在Java執行時的資料區裡,由JVM管理的記憶體區域分為下圖幾個模組:

相關推薦

Java系列筆記(3)

目錄 Java垃圾回收概況   Java GC(Garbage Collection,垃圾收集,垃圾回收)機制,是Java與C++/C的主要區別之一,作為Java開發者,一般不需要專門編寫記憶體回收和垃圾清理程式碼,對記憶體洩露和溢位的問題,也不需要像C程式設計師那樣戰戰兢兢。這是因為在Java虛擬機

java複習筆記3--SpringCloud系列一:微服務啟動原理探之beanFactory載入

昨天,我們對SpringApplication的初始化以及SpringApplication.run方法中的部分程式碼進行了解讀和追蹤。這一塊的重點就是Spring的 SPI,META-INF/spring.factories檔案的格式以及載入機制。一定要花時間

java複習筆記3--SpringCloud系列一:微服務啟動原理探索之beanFactory載入

昨天,我們對SpringApplication的初始化以及SpringApplication.run方法中的部分程式碼進行了解讀和追蹤。這一塊的重點就是Spring的 SPI,META-INF/spring.factories檔案的格式以及載入機制。一定要花時間

java學習筆記(3)

決定 ati 開始 詳細講解 調用 數據 寄存器 art 筆記 java基礎知識 1:方法 (1)方法:就是完成特定功能的代碼塊。 註意:在很多語言裏面有函數的定義,而在Java中,函數被稱為方法。 (2)格式: 修飾符 返回值類型 方法名(參數類型 參數名1

Java Servlet 筆記3

相同 循環 例如 通用 調用 大小 有一個 分隔 www. Servlet 表單數據 很多情況下,需要傳遞一些信息,從瀏覽器到 Web 服務器,最終到後臺程序。瀏覽器使用兩種方法可將這些信息傳遞到 Web 服務器,分別為 GET 方法和 POST 方法。   1.GET 方

Java IO 筆記 3 --- 物件流

如果想整個的存入,讀取,自定義的物件,就用到了,操作物件的流 — ObjectOutputStream, ObjectInputStream,被操作的物件,要實現 Serializable(標記介面) 注:流裡面的一對,不是兩個,是輸入和輸出相對應

Java學習筆記3--流程控制

3.1條件語句 3.1.1  簡單的if條件語句 語法格式: if(條件表示式){ 語句塊; } 上述語法表示為“如果滿足某種條件,就進行某種處理”。 public class Test { public static void main(Stri

Java學習筆記3:私有private關鍵字修飾符的理解

private 是一個許可權修飾符 可以修飾成員變數和成員方法,被其修飾的成員只能在本類中被訪問。 許可權: 在類中用private修飾的欄位,只能在本類和其伴生物件中訪問。 在類中用private[this]修飾的欄位,只能在本類中訪問。 類名前加private

Java基礎筆記3——package、垃圾回收機制、JVM

Java基礎筆記3 包 定義包用package,導包用import。 package語句只有一個,而且必須放在整個java檔案首行。 表示萬用字元,可以匯入當前包下的所有類。 //表示匯入了java包下的util包下的所有的類,但是不包括util的子包中的類 import java.util

Java系列筆記(5)

我想關注這個系列部落格的粉絲們都應該已經發現了,我一定是個懶蟲,在這裡向大家道歉了。這個系列的部落格是在我工作之餘寫的,經常幾天才寫一小節,不過本著寧缺毋濫的精神,所有寫的東西都是比較精煉的。這篇文章是本系列的第五篇,主要講Java執行緒相關的內容,基本上包含了執行緒要了解的比較深入的東西。技術在於積累,

Java系列筆記(6)

目錄 6,訊號量 在Java中,JVM、併發、容器、IO/NIO是我認為最重要的知識點,本章將介紹其中的併發,這也是從“會Java”到精通Java所必須經歷的一步。本章承接上一張《Java系列筆記(5) - 執行緒》,其中介紹了Java執行緒的相關知識,是本章介紹內容的基礎

Java系列筆記(4)

目錄 引數設定收集器搭配啟動記憶體分配監控工具和方法調優方法調優例項     光說不練假把式,學習Java GC機制的目的是為了實用,也就是為了在JVM出現問題時分析原因並解決之。通過學習,我覺得JVM監控與調優主要的著眼點在於如何配置、如何監控、如何優化3點上。下面就將針對這3點進行學習。     (如果

JAVA筆記(3)JSON常用包方法整理

            1. JSON是一種輕量級資料交換格式,用一種鍵值對格式進行資料傳輸,易於閱讀理解,也易於資料傳輸。             2.目前用過的兩個包       net.sf.json               com.alibaba.fastjso

java學習筆記3

ide src led str none 整數 util dem [] 1 創建引用類型變量公式     數據類型 變量名 = new 數據類型();     變量名.方法名(); 2 Scanner 類的使用    import java.util

Java 學習筆記(3)——函數

位置 byte 局部變量 垃圾回收 turn 溢出 中修改 java程序 length 之前的幾篇文章中,總結了java中的基本語句和基本數據類型等等一系列的最基本的東西,下面就來說說java中的函數部分 函數基礎 在C/C++中有普通的全局函數、類成員函數和類的靜態函數

JAVA學習筆記系列3-JVM、JRE和JDK的區別

JVM(Java Virtual Machine)就是一個虛擬的用於執行bytecode位元組碼的“虛擬計算機”。它和os打交道 JRE(Java Runtime Environment)包含:Java虛擬機器、庫函式、執行java應用程式所必須的檔案。它包含了JVM JDK(Java Developme

java基礎筆記3)----函數

註意 靜態函數 宋體 blog tro 過多 ava col nbsp 前言引入函數前,所有的代碼都寫在main主函數中,代碼過多,代碼冗余,可讀性差。 引入函數後,函數是實現某一特定功能的代碼塊。一個類中可以定義多個函數,每個函數和main主函數都是並列關系。 函數: 語

JAVA並發實戰學習筆記——3,4章

enc 方法 不變 設定 cti 保護 () col 約束 JAVA並發實戰學習筆記 第三章 對象的共享 失效數據: java程序實際運行中會出現①程序執行順序對打亂;②數據對其它線程不可見——兩種情況 上述兩種情況導致在缺乏同步的程序中出現失效數據這一現象,且“失效

6.3java學習筆記)緩衝流

一、緩衝流   使用緩衝流後的輸入輸出流會先儲存到緩衝區,等緩衝區滿後一次性將緩衝區中的資料寫入或取出。   避免程式頻繁的和檔案直接操作,這樣操作有利於提高讀寫效率。   緩衝流是構建在輸入輸出流之上的,可以理解為是對基本輸入輸出流的增強和擴充套件,但其根本是建立在輸入輸出流之上的。  

7.3(java學習筆記)網路程式設計之UDP

一、UDP   UDP的全稱是User Datagram Protocol(使用者資料報協議),是一種無連線的不安全的傳輸協議,   傳輸資料時傳送方和接收方無需建立連線,所以是不安全的。   傳送時不建立連線直接傳送,傳送後不關注接受方能否接到。UDP只負責發出去,後續的事情與之無關。