Java記憶體管理之軟引用(Soft Reference)

軟引用(Soft  Reference)的主要特點是具有較強的引用功能。只有當記憶體不夠的時候才回收這類內 存,因此在記憶體足夠的時候,他們通常不被回收。另外,這些引用對象還能保證在Java  拋出 OutOfMemory異常之前,被設定為null。他可以用於實現一些常用資源的緩衝,實現Cache的功能,保證最大限 度的使用記憶體而不引起OutOfMemory異常。下面是軟引用的實現代碼:import java.lang.ref.SoftReference;

Java的記憶體回收

1. 記憶體回收的意義在C++中,對象所佔的記憶體在程式結束運行之前一直被佔用,在明確釋放之前不能分 配給其它對象;而在Java中,當沒有對象引用指向原先分配給某個對象的記憶體時,該記憶體便成為垃圾。JVM的 一個系統級線程會自動釋放該記憶體塊。記憶體回收意味著程式不再需要的對象是"無用資訊",這些信 息將被丟棄。當一個對象不再被引用的時候,記憶體回收它佔領的空間,以便空間被後來的新對象使用。事實上

Java的介面和繼承

1.JAVA裡沒有多繼承,一個類只能有一個父類。而繼承的表現就是多態。一個父類可以有多個子類,而在 子類裡可以重寫父類的方法(例如方法print()),這樣每個子類裡重寫的代碼不一樣,自然表現形式就不一 樣。這樣用父類的變數去引用不同的子類,在調用這個相同的方法print()的時候得到的結果和表現形式就不 一樣了,這就是多態,相同的訊息(也就是調用相同的方法)會有不同的結果。舉例說明://父類 public class Father { //父類有一個打孩子方法 public

Java中利用介面實現回調

在 Java 支援方法指標之前,Java 介面不能提供一種實現回調的好方法。如果您習慣於傳遞在事件驅動編 程模型中調用的函數指標,則您會喜歡本技巧。 熟悉 MS-Windows 和 X Window System 事件驅動編程 模型的開發人員,習慣於傳遞在某種事件發生時調用(即“回調”)的函數指標。Java 的物件導向模型目前 並不支援方法指標,這樣似乎就不可能使用這種很好的機制。但我們並不是一點辦法都沒有!Java 的接

Java中的面板模式

面板模式(Facade)面板模式的意圖是:為子系統提供一個介面,便於它的使用。解釋:簡單的說,面板模式就是封裝多個上層應用需要的方法,使得上層調用變得簡單,為上層提供簡單的 介面,是設計模式中一種比較簡單的設計思想,但是,也是最常用的一種設計模式。舉例:當 你想吃橘子的時候,你需要做那幾件事呢?1:去買橘子2:剝橘子3:吃橘子這樣去一步一步的調用各個方法是不是覺得很麻煩呢?所以,我們需要做的工作就是簡化這些步驟,把它封裝

java中的橋接模式

橋接模式的英文是 Bridge ,橋接模式關注抽象的設計。抽象是指包含了一組抽象方法的類,這些抽象方 法可能包含多個實現。實現抽象的一般做法是建立類的階層,該階層的頂部是一個包含抽象 方法的抽象類別,該類的每一個子類都提供這些抽象方法的不同實現。但是,當需要對該層次進行子類化時,這 一做法就存在不足了。你可以建立一個橋,然後把這些抽象方法移到介面中,這樣,抽象就依賴於接 口的實現。橋接模式的意圖是:將抽象與抽象方法的實現相互分離來實現解耦,以便二者可以相互獨

Java中的DeskTop類

在Jdk1.6以後新增加了一個類--DeskTop,在JDK中它的解釋是這樣的:The Desktop class allows a Java application to launch associated applications registered on the native desktop to handle a URI or a file.Supported operations include: launching the user-default browser to

JAVA的線程提示

技巧1:用線程池來管理大量線程的場合產生和啟動線程都是很慢的操作,所以在要使用大量線程 的場合,如果我們用線程池來有效管理的話,可以讓線程池管理器來啟動或者重新分配已有線程從而提高效 率。技巧2:防止過多同步因為不必要的同步會導致效率低下。尤其調用同步方法比調用非同 步方法會佔據更多的時間。所以如果程式的執行一定在單線程環境中,就沒必要使用同步。技巧3:同 步方法而不要同步整個程式碼片段同步的地區越小,則效能越好技巧4:在追求速度的場合,用 ArrayList/HashMap來代替Vector/

JAVA的異常處理技巧

對於異常處理技巧1:避免使用異常來控製程序的執行流程如果能用if/else來控製程序流程就千萬不用try/catch,因為拋出異常會建立一個新的對象。Throwable 介面的建構函式調用名為 fillInStackTrace()的本地方法,fillInStackTrace()方法檢查棧,收集調用跟蹤資訊。只要有異常被拋出,VM 就必須調整調用棧,因為在處理過程中建立了一個新的對象。

JAVA的I/O最佳化技巧

為了提高I/O效能,主要基於以下原則:(1)能少訪問磁碟盡量少訪問(2)能少訪問底層操 作系統盡量少訪問底層作業系統(3)能少方法調用盡量少方法調用(4)能少個別的處理位元組 字元盡量少個別處理。技巧1:能用緩衝盡量使用緩衝來進行訪問比如基於字元的有 BufferedReader,基於位元組的有BufferedInputStream。或者用塊讀取方法來提高效能。技巧2:

JAVA類和對象的提示

剛在網上看到一篇關於Java效能調優的文章,很是協助,自己也用了十多年JAVA了,有些感同身受,這裡 引用那文章結合自己的感受來談下技巧1:盡量少用new來建立對象因為用new來建立對象的執行個體時 ,建構函式鏈上的所有建構函式都會被依次調用,導致效率很低。其實我們可以用一些小技巧,比如複用已有 對象。比如說,一個類如果實現了Cloneable介面的話,可以調用這個類的對象的clone()方法來建立一個新

Java聊天程式:NetUI1.0

提供代碼及jar包下載(模仿QQ的群聊天方式,實現群聊私聊)提示:該NetUI1.0是基於本部落格中的“ Java聊天室小程式-規劃方面”製作而成的:http://sunspot.blog.51cto.com/372554/128908在該代 碼中一部分新的組件設計運用的MVC模式,在之後會陸續解釋。比如DefaultNetUI類,該組件運用MVC模式設計

Java的toString()方法

Java 基礎內容toString方法我們處處都用到,是一個很重點的小知識,這裡大概講一下:我們查閱 API文檔,查看java.lang.Object類的toString方法的詳細描述是這樣的:toStringpublic String toString()Returns a string representation of the object. In general, the toString method returns a string that "textually

鄰接矩陣有向圖(三) Java詳解

鄰接矩陣有向圖的介紹鄰接矩陣有向圖是指通過鄰接矩陣表示的有向圖。上面的圖G2包含了"A,B,C,D,E,F,G"共7個頂點,而且包含了"<A,B>,<B,C>,<B,E>,<B,F>,<C,E>,<D,C>,<E,B>,<E,D>,<F,G>"共9條邊。

鄰接表有向圖(三) Java詳解

鄰接表有向圖的介紹鄰接表有向圖是指通過鄰接表表示的有向圖。上面的圖G2包含了"A,B,C,D,E,F,G"共7個頂點,而且包含了"<A,B>,<B,C>,<B,E>,<B,F>,<C,E>,<D,C>,<E,B>,<E,D>,<F,G>"共9條邊。上圖右邊的矩陣是G2在記憶體中的鄰接表示意圖。每一個頂點都包含一條鏈表,該鏈表記錄了"該頂點所

拓撲排序(三) Java詳解

拓撲排序介紹拓撲排序(Topological Order)是指,將一個有向非循環圖(Directed Acyclic

Kruskal演算法(三) Java詳解

最小產生樹在含有n個頂點的連通圖中選擇n-1條邊,構成一棵極小連通子圖,並使該連通子圖中n-1條邊上權值之和達到最小,則稱其為連通網的最小產生樹。例如,對於如上圖G4所示的連通網可以有多棵權值總和不相同的產生樹。克魯斯卡爾演算法介紹克魯斯卡爾(Kruskal)演算法,是用來求加權連通圖的最小產生樹的演算法。基本思想:按照權值從小到大的順序選擇n-1條邊,並保證這n-1條邊不構成迴路。具體做法:首先構造一個只含n個頂點的森林,然後依權值從小到大從連通網中選擇邊加入到森林中,並使森林中不產生迴路,直

Prim演算法(三) Java詳解

普裡姆演算法介紹普裡姆(Prim)演算法,是用來求加權連通圖的最小產生樹的演算法。基本思想對於圖G而言,V是所有頂點的集合;現在,設定兩個新的集合U和T,其中U用於存放G的最小產生樹中的頂點,T存放G的最小產生樹中的邊。從所有uU,v(V-U) (V-U表示出去U的所有頂點)的邊中選取權值最小的邊(u, v),將頂點v加入集合U中,將邊(u,

Dijkstra演算法(三) Java詳解

迪傑斯特拉演算法介紹迪傑斯特拉(Dijkstra)演算法是典型最短路徑演算法,用於計算一個節點到其他節點的最短路徑。

Floyd演算法(三) Java詳解

弗洛伊德演算法介紹和Dijkstra演算法一樣,弗洛伊德(Floyd)演算法也是一種用於尋找給定的加權圖中頂點間最短路徑的演算法。該演算法名稱以創始人之一、1978年圖靈獎獲得者、斯坦福大學電腦科學系教授羅伯特·弗洛伊德命名。基本思想通過Floyd計算圖G=(V,E)中各個頂點的最短路徑時,需要引入一個矩陣S,矩陣S中的元素a[i][j]表示頂點i(第i個頂點)到頂點j(第j個頂點)的距離。假設圖G中頂點個數為N,則需要對矩陣S進行N次更新。初始時,矩陣S中頂點a[i][j]的距離

總頁數: 4058 1 .... 2788 2789 2790 2791 2792 .... 4058 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.