欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)激活碼778899分享:java Tomcat調(diào)優(yōu)

柚子快報(bào)激活碼778899分享:java Tomcat調(diào)優(yōu)

http://yzkb.51969.com/

文章目錄

一、JVM組成JVM組成堆和棧的拓展垃圾回收垃圾確定方法垃圾回收基本算法

分代堆內(nèi)存垃圾回收策略堆內(nèi)存分代

二、參數(shù)調(diào)整java 內(nèi)存調(diào)整相關(guān)參數(shù)Tomcat的JVM的參數(shù)設(shè)置

在目前流行的互聯(lián)網(wǎng)架構(gòu)中,Tomcat在目前的網(wǎng)絡(luò)編程中是舉足輕重的,由于Tomcat的運(yùn)行依賴于JVM,從虛擬機(jī)的角度把Tomcat的調(diào)整分為外部環(huán)境調(diào)優(yōu) JVM 和 Tomcat 自身調(diào)優(yōu)兩部分。

一、JVM組成

JVM組成

類加載子系統(tǒng)(class loader subsystem): 使用Java語(yǔ)言編寫(xiě).java Source Code文件,通過(guò)javac編譯成.class Byte Code文件。class loader類加載器將所需所有類加載到內(nèi)存,必要時(shí)將類實(shí)例化成實(shí)例 運(yùn)行時(shí)數(shù)據(jù)區(qū)(runtime data areas): java程序在運(yùn)行時(shí)所占用的內(nèi)存時(shí)間,最消耗內(nèi)存的空間,需要優(yōu)化。 執(zhí)行引擎(execution engine): 包括JIT (JustInTimeCompiler)即時(shí)編譯器, GC垃圾回收器。 本地方法接口(native method interface): 將本地方法棧通過(guò)JNI(Java Native Interface)調(diào)用Native Method Libraries, 比如:C,C++庫(kù)等,擴(kuò)展Java功能,融合不同的編程語(yǔ)言為Java所用。 JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)域由下面部分構(gòu)成: **Method Area (線程共享):**方法區(qū)是所有線程共享的內(nèi)存空間,存放已加載的類信息(構(gòu)造方法,接口定義),常量(final),靜態(tài)變量(static), 運(yùn)行時(shí)常量池等。但實(shí)例變量存放在堆內(nèi)存中. 從JDK8開(kāi)始此空間由永久代改名為元空間。 heap (線程共享): 堆在虛擬機(jī)啟動(dòng)時(shí)創(chuàng)建,存放創(chuàng)建的所有對(duì)象信息。如果對(duì)象無(wú)法申請(qǐng)到可用內(nèi)存將拋出OOM異常.堆是靠GC垃圾回收器管理的,通過(guò)-Xmx -Xms 指定最大堆和最小堆空間大小。 Java stack (線程私有): Java棧是每個(gè)線程會(huì)分配一個(gè)棧,存放java中8大基本數(shù)據(jù)類型,對(duì)象引用,實(shí)例的本地變量,方法參數(shù)和返回值等,基于FILO()(First In Last Out),每個(gè)方法為一個(gè)棧幀 Program Counter Register (線程私有): PC寄存器就是一個(gè)指針,指向方法區(qū)中的方法字節(jié)碼,每一個(gè)線程用于記錄當(dāng)前線程正在執(zhí)行的字節(jié)碼指令地址。由執(zhí)行引擎讀取下一條指令,因?yàn)榫€程需要切換,當(dāng)一個(gè)線程被切換回來(lái)需要執(zhí)行的時(shí)候,知道執(zhí)行到哪里了。 Native Method stack (線程私有): 本地方法棧為本地方法執(zhí)行構(gòu)建的內(nèi)存空間,存放本地方法執(zhí)行時(shí)的局部變量、操作數(shù)等。

堆和棧的拓展

CPU內(nèi)部有個(gè)模塊叫ALU專門(mén)用來(lái)做邏輯運(yùn)算,但進(jìn)行復(fù)雜運(yùn)算時(shí),需要存儲(chǔ)臨時(shí)結(jié)果,那這時(shí)候就需要有一塊空間存放臨時(shí)結(jié)果這個(gè)空間就叫寄存器有了寄存器cpu 就可以分步計(jì)算,需要臨時(shí)結(jié)果時(shí)可以從臨時(shí)寄存器中取回?cái)?shù)據(jù)。但CPU是用于運(yùn)算的,并不可能有很多寄存器,所以內(nèi)存中劃出一片專門(mén)的空間用于存儲(chǔ) cpu的臨時(shí)數(shù)據(jù),既然是專用的那么就得有個(gè)名字就叫棧stack,除了棧還劃分了一塊區(qū)域叫堆。

堆(Heap):

動(dòng)態(tài)內(nèi)存分配:堆用于存儲(chǔ)動(dòng)態(tài)分配的內(nèi)存。程序可以在運(yùn)行時(shí)從堆中動(dòng)態(tài)分配內(nèi)存,這使得程序能夠根據(jù)需要?jiǎng)討B(tài)創(chuàng)建、修改和釋放內(nèi)存空間。存儲(chǔ)復(fù)雜數(shù)據(jù)結(jié)構(gòu):堆適合存儲(chǔ)較大或者不確定大小的數(shù)據(jù)結(jié)構(gòu),如鏈表、樹(shù)等。在堆上分配的內(nèi)存區(qū)域?qū)τ跀?shù)據(jù)的存儲(chǔ)和訪問(wèn)比較靈活。手動(dòng)管理內(nèi)存:在堆上分配內(nèi)存需要程序員手動(dòng)管理內(nèi)存的分配和釋放,避免內(nèi)存泄漏或者訪問(wèn)越界的問(wèn)題。

棧(Stack):

函數(shù)調(diào)用和局部變量存儲(chǔ):棧用于存儲(chǔ)函數(shù)調(diào)用和局部變量。每次函數(shù)調(diào)用時(shí),參數(shù)、返回地址和局部變量等數(shù)據(jù)會(huì)被壓入棧中,函數(shù)執(zhí)行完后再?gòu)棾?。自?dòng)管理內(nèi)存:棧上的內(nèi)存由系統(tǒng)自動(dòng)管理,無(wú)需程序員顯式地分配和釋放。棧上的數(shù)據(jù)的生命周期與函數(shù)調(diào)用的作用域相關(guān),當(dāng)函數(shù)退出時(shí),棧上的數(shù)據(jù)會(huì)被自動(dòng)釋放??焖僭L問(wèn):棧的數(shù)據(jù)結(jié)構(gòu)是先進(jìn)后出(FILO),只能從棧頂進(jìn)行操作,訪問(wèn)速度較快。

堆(Heap):堆就像是您桌子上的堆積木一樣,您可以隨意地在桌子上放置、移動(dòng)和刪除堆積木。每塊堆積木可能擁有不同的大小和形狀,您可以根據(jù)需要?jiǎng)討B(tài)地分配和釋放這些堆積木。堆中的內(nèi)存空間通常是動(dòng)態(tài)分配的,需要程序員手動(dòng)管理分配和釋放。在堆上分配的內(nèi)存可以根據(jù)需要?jiǎng)討B(tài)增加或減少,但在使用過(guò)程中需要顯式地進(jìn)行內(nèi)存管理。

棧(Stack):棧就像是您手中疊盤(pán)子的過(guò)程,您一層一層地往上疊加盤(pán)子。每疊一層盤(pán)子,您只能在最上面的一層添加或移除盤(pán)子。棧具有先進(jìn)后出(FILO)的特性,最后放入的盤(pán)子會(huì)最先被拿走。這意味著棧中只能從頂部添加或刪除數(shù)據(jù),不能隨意訪問(wèn)棧中間的數(shù)據(jù)。棧是一種固定大小的內(nèi)存結(jié)構(gòu),由系統(tǒng)自動(dòng)管理,存儲(chǔ)函數(shù)調(diào)用、局部變量等數(shù)據(jù)。

垃圾回收

安卓程序需要運(yùn)行在JVM上,而安卓平臺(tái)使用了Google自研的Java虛擬機(jī)— —Dalvid,適合于內(nèi)存、處理器能力有限系統(tǒng)。

在堆內(nèi)存中如果創(chuàng)建的對(duì)象不再使用,仍占用著內(nèi)存,此時(shí)即為垃圾。需要即使進(jìn)行垃圾回收,從而釋放內(nèi)存空間給其它對(duì)象使用。不同的開(kāi)發(fā)語(yǔ)言都有垃圾回收問(wèn)題,C,C++需要程序員人為回收,造成開(kāi)發(fā)難度大,容易出錯(cuò)等問(wèn)題,但執(zhí)行效率高,而JAVA和Python中不需要程序員進(jìn)行人為的回收垃圾,而由JVM或相關(guān)程序自動(dòng)回收垃圾,減輕程序員的開(kāi)發(fā)難度,但可能會(huì)造成執(zhí)行效率低下。 堆內(nèi)存里面經(jīng)常創(chuàng)建、銷(xiāo)毀對(duì)象,內(nèi)存也是經(jīng)常被使用、被釋放。如果不妥善處理,一個(gè)使用頻繁的進(jìn)程,可能會(huì)出現(xiàn)雖然有足夠的內(nèi)存容量,但是無(wú)法分配出可用內(nèi)存空間,因?yàn)闆](méi)有連續(xù)成片的內(nèi)存了,內(nèi)存全是碎片化的空間。所以需要有合適的垃圾回收機(jī)制,確保正常釋放不再使用的內(nèi)存空間,還需要保證內(nèi)存空間盡可能的保持一定的連續(xù)。

那什么是java程序里的垃圾? 長(zhǎng)時(shí)間沒(méi)有被使用的進(jìn)程和線程。 對(duì)于垃圾回收,需要解決三個(gè)問(wèn)題。

哪些垃圾需要回收。怎么回收垃圾。什么時(shí)候回收垃圾。

垃圾確定方法

引用計(jì)數(shù): 每一個(gè)堆內(nèi)對(duì)象上都與一個(gè)私有引用計(jì)數(shù)器,記錄著被引用的次數(shù),引用計(jì)數(shù)清零,該對(duì)象所占用堆內(nèi)存就可以被回收。循環(huán)引用的對(duì)象都無(wú)法將引用計(jì)數(shù)歸零,就無(wú)法清除。Python中使用此種方式。 簡(jiǎn)單來(lái)說(shuō)就是有個(gè)本子,隨時(shí)記錄有沒(méi)有人在使用。但缺陷在于如果AB資源相互引用,即使是垃圾,但也不會(huì)被清除。 根搜索(可達(dá))算法: 簡(jiǎn)單來(lái)說(shuō),根搜索算法的步驟如下:

選擇一個(gè)起始節(jié)點(diǎn)作為根節(jié)點(diǎn)。訪問(wèn)這個(gè)根節(jié)點(diǎn),并標(biāo)記為已訪問(wèn)。遍歷根節(jié)點(diǎn)的鄰接節(jié)點(diǎn)(通過(guò)邊與根節(jié)點(diǎn)相連的節(jié)點(diǎn))。依次遍歷鄰接節(jié)點(diǎn)的鄰接節(jié)點(diǎn),持續(xù)深入圖結(jié)構(gòu)。在這個(gè)過(guò)程中,確保避免重復(fù)訪問(wèn)已經(jīng)標(biāo)記過(guò)的節(jié)點(diǎn)。當(dāng)無(wú)法再找到未訪問(wèn)的鄰接節(jié)點(diǎn)時(shí),表示到達(dá)盡頭,搜索結(jié)束。

遍歷到的進(jìn)程不是垃圾進(jìn)程,遍歷不到的進(jìn)程就是垃圾進(jìn)程。

垃圾回收基本算法

標(biāo)記-清除 Mark-Sweep 過(guò)程分垃圾標(biāo)記階段和內(nèi)存釋放階段。標(biāo)記階段,找到所有可訪問(wèn)對(duì)象打個(gè)標(biāo)記。清理階段,遍歷整個(gè)堆,對(duì)未標(biāo)記對(duì)象(即不再使用的對(duì)象)逐一進(jìn)行清理。 標(biāo)記-清除最大的問(wèn)題會(huì)造成內(nèi)存碎片 (即不是連續(xù)的內(nèi)存空間),但是不浪費(fèi)空間,效率較高。如果對(duì)象較多,逐一刪除效率也會(huì)影響。

標(biāo)記壓縮 (壓實(shí))Mark-Compact 分垃圾標(biāo)記階段和內(nèi)存整理階段。標(biāo)記階段,找到所有可訪問(wèn)對(duì)象打個(gè)標(biāo)記。內(nèi)存清理階段時(shí),整理時(shí)將對(duì)象向內(nèi)存一端移動(dòng),整理后存活對(duì)象連續(xù)的集中在內(nèi)存一端。 標(biāo)記-壓縮算法好處是整理后內(nèi)存空間連續(xù)分配,有大段的連續(xù)內(nèi)存可分配,沒(méi)有內(nèi)存碎片。缺點(diǎn)是內(nèi)存整理過(guò)程有消耗,效率相對(duì)低下。

復(fù)制Copying 先將可用內(nèi)存分為大小相同兩塊區(qū)域A和B,每次只用其中一塊,比如A。當(dāng)A用完后,則將A中存活的對(duì)象復(fù)制到B。復(fù)制到B的時(shí)候連續(xù)的使用內(nèi)存,最后將A一次性清除干凈。缺點(diǎn)是比較浪費(fèi)內(nèi)存,只能使用原來(lái)一半內(nèi)存,因?yàn)閮?nèi)存對(duì)半劃分了,復(fù)制過(guò)程畢竟也是有代價(jià)。好處是沒(méi)有碎片,復(fù)制過(guò)程中保證對(duì)象使用連續(xù)空間,且一次性清除所有垃圾,所以效率很高。 算法總結(jié) 我們需要在不同的場(chǎng)景下選擇最合適的算法。

效率: 復(fù)制算法>標(biāo)記清除算法> 標(biāo)記壓縮算法內(nèi)存整齊度: 復(fù)制算法=標(biāo)記壓縮算法> 標(biāo)記清除算法內(nèi)存利用率: 標(biāo)記壓縮算法=標(biāo)記清除算法>復(fù)制算法

STW 對(duì)于大多數(shù)垃圾回收算法而言,GC(Garbage Collection)線程工作時(shí),停止所有工作的線程,稱為Stop The World。GC 完成時(shí),恢復(fù)其他工作線程運(yùn)行。這也是JVM運(yùn)行中最頭疼的問(wèn)題。

分代堆內(nèi)存垃圾回收策略

堆內(nèi)存分代

上述垃圾回收算法都有優(yōu)缺點(diǎn),能不能對(duì)不同數(shù)據(jù)進(jìn)行區(qū)分管理,不同分區(qū)對(duì)數(shù)據(jù)實(shí)施不同回收策略,分而治之將heap內(nèi)存空間分為三個(gè)不同類別: 年輕代、老年代、持久代

Heap堆內(nèi)存分為

年輕代Young:Young Generation

伊甸園區(qū)eden: 只有一個(gè),剛剛創(chuàng)建的對(duì)象。幸存(存活)區(qū)Servivor Space:有2個(gè)幸存區(qū),一個(gè)是from區(qū),一個(gè)是to區(qū)。大小相等、地位相同、可互換。

from 指的是本次復(fù)制數(shù)據(jù)的源區(qū)to 指的是本次復(fù)制數(shù)據(jù)的目標(biāo)區(qū) 老年代Tenured:Old Generation, 長(zhǎng)時(shí)間存活的對(duì)象。

默認(rèn)空間大小比例: 注意:在tomcat 狀態(tài)頁(yè)可以看到以下的內(nèi)存分代 持久代是 元空間 metaspace

[root@localhost mnt]#vim /usr/local/tomcat/conf/tomcat-users.xml

#只可以本地登錄

.......

需要配置一下。

年輕代回收Minor GC

起始時(shí),所有新建對(duì)象(特大對(duì)象直接進(jìn)入老年代)都出生在eden,當(dāng)eden滿了,啟動(dòng)GC。這個(gè)稱為Young GC 或者M(jìn)inor GC。 先標(biāo)記eden存活對(duì)象,然后將存活對(duì)象復(fù)制到s0(假設(shè)本次是s0,也可以是s1,它們可以調(diào)換),eden剩余所有空間都清空。GC完成。 繼續(xù)新建對(duì)象,當(dāng)eden再次滿了,啟動(dòng)GC。 先同時(shí)標(biāo)記eden和s0中存活對(duì)象,然后將存活對(duì)象復(fù)制到s1。將eden和s0清空,此次GC完成。 繼續(xù)新建對(duì)象,當(dāng)eden滿了,啟動(dòng)GC。 先標(biāo)記eden和s1中存活對(duì)象,然后將存活對(duì)象復(fù)制到s0。將eden和s1清空,此次GC完成以后就重復(fù)上面的步驟。

通常場(chǎng)景下,大多數(shù)對(duì)象都不會(huì)存活很久,而且創(chuàng)建活動(dòng)非常多,新生代就需要頻繁垃圾回收。但是,如果一個(gè)對(duì)象一直存活,它最后就在from、to來(lái)回復(fù)制,如果from區(qū)中對(duì)象復(fù)制次數(shù)達(dá)到閾值(默認(rèn)15次,CMS為6次,可通過(guò)java的選項(xiàng) -XX:MaxTenuringThreshold=N 指定),就直接復(fù)制到老年代。

老年代回收 Major GC 進(jìn)入老年代的數(shù)據(jù)較少,所以老年代區(qū)被占滿的速度較慢,所以垃圾回收也不頻繁。如果老年代也滿了,會(huì)觸發(fā)老年代GC,稱為Old GC或者 Major GC。由于老年代對(duì)象一般來(lái)說(shuō)存活次數(shù)較長(zhǎng),所以較常采用標(biāo)記-壓縮算法。

當(dāng)老年代滿時(shí),會(huì)觸發(fā) Full GC,即對(duì)所有"代"的內(nèi)存進(jìn)行垃圾回收。

Minor GC比較頻繁,Major GC較少。但一般Major GC時(shí),由于老年代對(duì)象也可以引用新生代對(duì)象,所以先進(jìn)行一次Minor GC,然后在Major GC會(huì)提高效率??梢哉J(rèn)為回收老年代的時(shí)候完成了一次Full GC。所以可以認(rèn)為 MajorGC = FullGC。

二、參數(shù)調(diào)整

java 內(nèi)存調(diào)整相關(guān)參數(shù)

Java 命令行參考文檔: https://docs.oracle.com/javase/8/docs/technotes/tools/unix/java.html

這里調(diào)整的參數(shù),是調(diào)整jvm虛擬機(jī)的啟動(dòng)內(nèi)存等參數(shù),還有垃圾回收參數(shù)。

選項(xiàng)分類

-選項(xiàng)名稱 此為標(biāo)準(zhǔn)選項(xiàng),所有HotSpot都支持-X選項(xiàng)名稱 為穩(wěn)定的非標(biāo)準(zhǔn)選項(xiàng)-XX:選項(xiàng)名稱 非標(biāo)準(zhǔn)的不穩(wěn)定選項(xiàng),下一個(gè)版本可能會(huì)取消

參數(shù)說(shuō)明舉例-Xms設(shè)置應(yīng)用程序初始使用的堆內(nèi)存大?。贻p代+老年代)-Xms2g-Xmx設(shè)置應(yīng)用程序能獲得的最大堆內(nèi)存早期JVM不建議超過(guò)32G,內(nèi)存管理效率下降-Xms4g-XX:NewSize設(shè)置初始新生代大小-XX:NewSize=128m-XX:MaxNewSize設(shè)置最大新生代內(nèi)存空間-XX:MaxNewSize=256m-Xmnsize同時(shí)設(shè)置-XX:NewSize 和 -XX:MaxNewSize,代-Xmn1g-XX:NewRatio以比例方式設(shè)置新生代和老年代-XX:NewRatio=2 new/old=1/2-XX:SurvivorRatio以比例方式設(shè)置eden和survivor(S0或S1)-XX:SurvivorRatio=6eden/survivor=6/1new/survivor=8/1-Xss設(shè)置每個(gè)線程私有的??臻g大小,依據(jù)具體線程-Xss256k

Tomcat的JVM的參數(shù)設(shè)置

默認(rèn)不指定,-Xmx大約使用了1/4的內(nèi)存,當(dāng)前本機(jī)內(nèi)存指定約為1G。

在bin/catalina.sh中增加一行

118行

# OS specific support. $var _must_ be set to either true or false.

#添加下面一行

JAVA_OPTS="-server -Xms128m -Xmx512m -XX:NewSize=100m -XX:MaxNewSize=200m"

JAVA_OPTS="-server -Xms4g -Xmx4g -XX:NewSize= -XX:MaxNewSize= "

-server:服務(wù)器模式

-Xms:堆內(nèi)存初始化大小

-Xmx:堆內(nèi)存空間上限

-XX:NewSize=:新生代空間初始化大小

-XX:MaxNewSize=:新生代空間最大值

Tomcat默認(rèn)安裝下的缺省配置并不適合生產(chǎn)環(huán)境,它可能會(huì)頻繁出現(xiàn)假死現(xiàn)象需要重啟,只有通過(guò)不斷壓測(cè)優(yōu)化才能讓它最高效率穩(wěn)定的運(yùn)行。優(yōu)化主要包括三方面,分別為操作系統(tǒng)優(yōu)化(內(nèi)核參數(shù)優(yōu)化),Tomcat配置文件參數(shù)優(yōu)化,Java虛擬機(jī)(JVM)調(diào)優(yōu)。 關(guān)于 Tomcat 主配置文件 server.xml 里面很多默認(rèn)的配置項(xiàng),但并不能滿足業(yè)務(wù)需求,常用的優(yōu)化相關(guān)參數(shù)如下: 【maxThreads】Tomcat 使用線程來(lái)處理接收的每個(gè)請(qǐng)求,這個(gè)值表示 Tomcat 可創(chuàng)建的最大的線程數(shù),默認(rèn)值是 200。

【minSpareThreads】最小空閑線程數(shù),Tomcat 啟動(dòng)時(shí)的初始化的線程數(shù),表示即使沒(méi)有人使用也開(kāi)這么多空線程等待,默認(rèn)值是 10

【maxSpareThreads】最大備用線程數(shù),一旦創(chuàng)建的線程超過(guò)這個(gè)值,Tomcat 就會(huì)關(guān)閉不再需要的 socket 線程。默認(rèn)值是-1(無(wú)限制)。一般不需要指定

【URIEncoding】指定 Tomcat 容器的 URL 編碼格式,語(yǔ)言編碼格式這塊倒不如其它 Web服務(wù)器軟件配置方便,需要分別指定utf-8

【connnectionTimeout】網(wǎng)絡(luò)連接超時(shí),單位:毫秒,設(shè)置為 0 表示永不超時(shí),這樣設(shè)置有隱患的。通常默認(rèn) 20000 毫秒(20秒)就可以

【enableLookups】是否反查域名,以返回遠(yuǎn)程主機(jī)的主機(jī)名,取值為:true 或 false,如果設(shè)置為 false,則直接返回 IP 地址,為了提高處理能力,應(yīng)設(shè)置為 false。

【disableUploadTimeout】上傳時(shí)是否使用超時(shí)機(jī)制。應(yīng)設(shè)置為 true。

【connectionUploadTimeout】上傳超時(shí)時(shí)間,畢竟文件上傳可能需要消耗更多的時(shí)間,這個(gè)根據(jù)你自己的業(yè)務(wù)需要自己調(diào),以使 Servlet 有較長(zhǎng)的時(shí)間來(lái)完成它的執(zhí)行,需要與上一個(gè)參數(shù)一起配合使用才會(huì)生效

【acceptCount】指定當(dāng)所有可以使用的處理請(qǐng)求的線程數(shù)都被使用時(shí),可傳入連接請(qǐng)求的最大隊(duì)列長(zhǎng)度,超過(guò)這個(gè)數(shù)的請(qǐng)求將不予處理,默認(rèn)為 100 個(gè)。

【compression】是否對(duì)響應(yīng)的數(shù)據(jù)進(jìn)行 GZIP 壓縮,off:表示禁止壓縮;on:表示允許壓縮(文本將被壓縮)、force:表示所有情況下都進(jìn)行壓縮,默認(rèn)值為 off,壓縮數(shù)后可以有效的減少頁(yè)面的大小,一般可以減小 1/3 左右,節(jié)省帶寬。

【compressionMinSize】表示壓縮響應(yīng)的最小值,只有當(dāng)響應(yīng)報(bào)文大小大于這個(gè)值的時(shí)候才會(huì)對(duì)報(bào)文進(jìn)行壓縮,如果開(kāi)啟了壓縮功能,默認(rèn)值就是 2048

【compressableMimeType】壓縮類型,指定對(duì)哪些類型的文件進(jìn)行數(shù)據(jù)壓縮。

【noCompressionUserAgents=“gozilla, traviata”】對(duì)于以下的瀏覽器,不啟用壓縮。

柚子快報(bào)激活碼778899分享:java Tomcat調(diào)優(yōu)

http://yzkb.51969.com/

精彩內(nèi)容

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://m.gantiao.com.cn/post/19259570.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄