java靜態資源
㈠ 高並發原理 用java怎麼優化
面對高並發高請求的大型JAVA應用場景,需要考慮到以下幾個方面並並進行優化:
1、代碼方面
從最基礎的做起,優化所寫代碼,減少不必要的資源浪費,比如:避免頻繁的new對象,優先考慮使用單例模式、減繁去重,重用代碼要歸納成公用方法,相關工具類使用靜態方法訪問、使用java中效率高的類等等;
2、資料庫方面
當面對復雜的應用,用戶大量訪問的時候,一台數據很快無法滿足需求,這時就需要使用資料庫集群或者庫表散列。
常用的優化措施是M-S(主-從)方式進行同步復制,將查詢和操作和分別在不同的伺服器上進行操作,這樣會大大減少資料庫操作耗時;
3、靜態資源方面
我們可以把一些訪問頻次高但是變更不大的動態請求提前渲染生成html靜態頁面,然後每次用戶再訪問該請求時,就不要再調用伺服器請求了,這樣會大大減少高峰期時伺服器的壓力;
在靜態資源例如圖片、js、css等方面,我們可以將這些資源與核心應用和html資源分離開,建立合適的靜態文件伺服器,針對不同類型的靜態資源對伺服器進行優化配置,這樣就不會再高並發時因為這些靜態資源的問題而使整個頁面崩潰了;
4、其他方面
緩存:盡量使用緩存,包括用戶緩存,信息緩存等,多花點內存來做緩存,可以大量減少與資料庫的交互,提高性能。
可以考慮memcached緩存集群和靜態HTML、Redis緩存
負載均衡:nginx(非同步)、squid(同步)、lighttpd(非同步)
存儲:分布式的,如hadop等
㈡ java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中,還是當被調用的時候才進行載入呢
java靜態資源(靜態方法,靜態屬性)是程序一運行就載入到jvm中的。
1、類中的靜態屬性會被加入到類對象(也可以叫做類的模板,是類的描述) 的構造器中,靜態方法也會被加入到類對象中。
2、當第一次使用類時,JVM會通過類載入器,載入類對象,從而初始化靜態屬性,並裝入類的方法,包括靜態方法和實例方法(方法不會被調用,只是載入,從這個意義上來說,靜態方法和實例方法是類似的)。嫌乎殲
3、當頃孝創建類的實例對象時,JVM會調用類的構造器,從而初始化類的屬性。
(2)java靜態資源擴展閱讀:
JVM 類載入機制
JVM類載入機制分為五個部分:載入,驗證,准備,解析,初始化,下面我們就分別來看一下這五個過程。
1、載入
載入是類載入過程中的一個階段,這個階段會在內存中生成一個代表這個類的java.lang.Class對象,作為方法區這個類的各種數據的入口。注意這里不一定非得要從一個Class文件獲取,這里既可以從ZIP包中讀取(比如從jar包和war包中讀取),也可以在運行時計算生成(動態代理),也可以由其它文件生成(比如將JSP文件轉換成對應的Class類)。
2、驗證
這一階段的主要目的是為了確保Class文件的位元組流中包含的信息是否符合當前虛擬機的要求,並且不會危害虛擬機自身的安全。
3、准備
准備階段是正式為類變數分配內存並設置類變數的初始值階段,即在方法區中分配這些變數芹沖所使用的內存空間。
4、解析
解析階段是指虛擬機將常量池中的符號引用替換為直接引用的過程。符號引用就是class文件中的:
CONSTANT_Class_info
CONSTANT_Field_info
CONSTANT_Method_info
等類型的常量。
5、初始化
初始化階段是類載入最後一個階段,前面的類載入階段之後,除了在載入階段可以自定義類載入器以外,其它操作都由JVM主導。到了初始階段,才開始真正執行類中定義的Java程序代碼。初始化階段是執行類構造器<client>方法的過程。