原创 標記 - 整理算法

標記 - 整理算法 複製算法爲什麼不適合老年代 複製收集算法在對象存活率較高時需要進行較多的複製操作,效率將會降低。更關鍵的是,如果不想浪費50%的內存空間,就需要提供額外的空間進行分配擔保。由於老年代中對象存活率較高,而且找

原创 Class 文件與類(或接口)的定義信息

Class 文件與類(或接口)的定義信息 任何一個Class文件都對應着唯一一個類或接口的定義信息。 類或接口的定義信息並不一定得定義在文件中,例如,類或接口可以通過類加載器直接生成。 參考文章:《深入理解Java虛擬機》

原创 MySQL 遊標與嵌套循環

遊標嵌套遍歷 user表: CREATE DEFINER=`root`@`localhost` PROCEDURE `test`() BEGIN DECLARE user1 VARCHAR(100); DECL

原创 Serial Old收集器

Serial Old收集器 Serial Old收集器是Serial收集器的老年代版本,它同樣是一個單線程收集器,但使用**“標記 - 整理”**算法進行垃圾回收。

原创 Parallel Scavenge收集器

Parallel Scavenge收集器 Parallel Scavenge收集器也被稱爲“吞吐量優先收集器”。 Serial、ParNew、CMS等收集器的關注點是儘可能縮短GC時用戶線程的停頓時間,而Parallel Sc

原创 Serial垃圾收集器

Serial垃圾收集器 Serial是最基礎、發展歷史最悠久的收集器。 Serial:依次的 Serial是一個單線程收集器。這裏“單線程”的含義不僅僅說明它只會使用一個CPU或一條收集線程去完成垃圾收集工作,更重要的是,

原创 分代收集算法

分代收集算法 當前所有商用虛擬機都採用“分代收集“(Generational Collection)算法,這種算法根據對象存活週期的不同將內存劃分成幾塊。一般是把Java堆劃分爲新生代和老年代,這樣就可以根據各個代的特點選擇最合

原创 垃圾收集概述

垃圾收集概述 1. 垃圾收集(Garbage Collecion,GC)與Java的關係 GC不是Java的伴生產物,事實上,GC具有比Java更悠久的歷史。 2. 垃圾收集主要思考的問題——What? When? How?

原创 如何判斷對象可以被回收?

如何判斷對象可以被回收? 堆裏面存放着Java世界中幾乎所有的對象實例,垃圾收集器對堆進行回收前,要做的第一件事情就是確定哪些對象還“活着”,哪些對象已經“死了”(即不可能再被任何途徑使用)。 我覺得《尋夢環遊記》是一個很棒的

原创 普通方法引用

普通方法引用 public class Main { public static void main(String[] args) { //匿名內部類 Runnable runnable

原创 IDEA如何爲快捷的爲對象生成serialVersionUID?

IDEA如何爲快捷的爲對象生成serialVersionUID? 使用效果 配置步驟

原创 Java浮點類型精度問題

Java浮點類型精度問題 public static void main(String[] args) throws Exception { float a = 1.0f - 0.9f; float b = 0.

原创 Java單例類與對象序列化

Java單例類與對象序列化 爲了保證全局只有一個實例,單例類往往將構造方法的訪問權限設置爲private: public class Singleton implements Serializable{ private

原创 爲什麼Java浮點類型無法精確表示0.1

爲什麼Java浮點類型無法精確表示0.1 我們知道,十進制小數轉二進制的方法爲“乘2取整,順序排列”,下面看兩個實例: 計算0.625的二進制表示 0.625 × 2 = 1.25 ...... 1 0.25 × 2 =

原创 二進制能夠準確的表示十進制嗎?

我們知道,十進制小數轉二進制的方法爲“乘2取整,順序排列”,下面看兩個實例: 計算0.625的二進制表示 0.625 × 2 = 1.25 ...... 1 0.25 × 2 = 0.50 ...... 0 0.50 ×