摘要:,用于調用垃圾收集器,在調用時,垃圾收集器將運行以回收未使用的內存空間。然而調用附帶一個免責聲明,無法保證對垃圾收集器的調用。所以并不能說是完美主動進行了垃圾回收。
歡迎進入JAVA基礎課程
博客地址:https://blog.csdn.net/houjiyu...
本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。若有問題請及時留言或加QQ:243042162。
寄語:數據類型
經歷過國考、省考,參加過各種證書考試,無疑對于上了年紀的人來說時刻有著莫大的危機感,時刻想著如何擺脫目前的困境。經常跟身邊的同事去討論20年后你在這個行業處于什么位置,當想想如果20年后還處于現在的位置是多么可怕的一件事情。悟性可以差點,時間可晚點,但學習跟積累必須跟上,與時俱進,搬磚人才可能脫胎換骨,收割事業的成就感與滿足感。
1. 基礎數據類型:
數值型
整型數據(byte |short |int |long)
浮點類型(float |double)
字符型(char)
布爾型(boolean)
2. 引用數據類型:
類(class)
接口(interface)
數組
注意事項垃圾回收機制
&:左右都判斷,可作位運算和邏輯與運算符
&&:左假則結束,左真判斷右,可作邏輯與運算符
之前網絡上見過兩個很搞笑的圖比喻C語言和JAVA之間的垃圾回收機制,如下圖所示
C語言
JAVA語言
(1)C的垃圾回收是人工的,工作量大,但是可控性高。1. 確定哪些對象要進行回收
(2)JAVA是自動化的,但是可控性很差,甚至有時會出現內存溢出的情況。
(3)System.gc(),用于調用垃圾收集器,在調用時,垃圾收集器將運行以回收未使用的內存空間。它將嘗試釋放被丟棄對象占用的內存。然而System.gc()調用附帶一個免責聲明,無法保證對垃圾收集器的調用。所以System.gc()并不能說是完美主動進行了垃圾回收。
經典算法:引用計數法、可達性分析算法
2. 什么時候進行回收會在cpu空閑的時候自動進行回收
在堆內存存儲滿了之后
主動調用System.gc()后嘗試進行回收
3. 如何回收相關算法:標記-清除算法、復制算法、標記-整理算法、分代收集算法
標記-清除算法 (效率和內存碎片問題):這是最基礎的一種算法,分為兩個步驟,第一個步驟就是標記,也就是標記處所有需要回收的對象,標記完成后就進行統一的回收掉哪些帶有標記的對象。這種算法優點是簡單,缺點是效率問題,還有一個最大的缺點是空間問題,標記清除之后會產生大量不連續的內存碎片,當程序在以后的運行過程中需要分配較大對象時無法找到足夠的連續內存而造成內存空間浪費。
復制算法(適用于對象存活率低的場景) :復制將可用內存按容量劃分為大小相等的兩塊,每次只使用其中的一塊。當這一塊的內存用完了,就將還存活著的對象復制到另外一塊上面,然后再把已使用過的內存空間一次清理掉。這樣使得每次都是對其中的一塊進行內存回收,內存分配時也就不用考慮內存碎片等復雜情況。只是這種算法的代價是將內存縮小為原來的一半。
標記整理算法(適用于對象存活率高的場景) :標記整理算法與標記清除算法很相似,但最顯著的區別是:標記清除算法僅對不存活的對象進行處理,剩余存活對象不做任何處理,造成內存碎片;而標記整理算法不僅對不存活對象進行處理清除,還對剩余的存活對象進行整理,重新整理,因此其不會產生內存碎片。
分代收集算法 (根據存活周期分為不同的幾塊):分代收集算法是一種比較智能的算法,也是現在jvm使用最多的一種算法,他本身其實不是一個新的算法,而是他會在具體的場景自動選擇以上三種算法進行垃圾對象回收。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/74935.html
摘要:歡迎進入基礎課程博客地址本系列文章將主要針對一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。是同步的,而不是。因此,更適合于單線程環境,而適合于多線程環境。 歡迎進入JAVA基礎課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總...
摘要:歡迎進入基礎課程博客地址本系列文章將主要針對一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸開發菜鳥還是業界資深人士,都希望對廣大同行帶來一些幫助。是同步的,而不是。因此,更適合于單線程環境,而適合于多線程環境。 歡迎進入JAVA基礎課程 博客地址:https://blog.csdn.net/houjiyu...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總...
摘要:注意不僅可以控制事務傳播行為等,還可以控制事務隔離級別等。事物的隔離級別隔離級別越高,并發性能越低。在的隔離級別下,會出現幻讀的問題。可串行化是最高的隔離級別。 歡迎進入JAVA基礎課程 博客地址:https://mp.csdn.net/mdeditor/...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界資深人士,都希望對...
摘要:注意不僅可以控制事務傳播行為等,還可以控制事務隔離級別等。事物的隔離級別隔離級別越高,并發性能越低。在的隔離級別下,會出現幻讀的問題。可串行化是最高的隔離級別。 歡迎進入JAVA基礎課程 博客地址:https://mp.csdn.net/mdeditor/...本系列文章將主要針對JAVA一些基礎知識點進行講解,為平時歸納所總結,不管是剛接觸JAVA開發菜鳥還是業界資深人士,都希望對...
閱讀 2633·2021-11-23 09:51
閱讀 888·2021-09-24 10:37
閱讀 3618·2021-09-02 15:15
閱讀 1966·2019-08-30 13:03
閱讀 1886·2019-08-29 15:41
閱讀 2632·2019-08-29 14:12
閱讀 1429·2019-08-29 11:19
閱讀 3307·2019-08-26 13:39