jvm怎么修改線程堆棧大小 tomcat可以支持多大并發(fā)量?
tomcat可以支持多大并發(fā)量?可以配置Tomcat的最大并發(fā)數(shù)。實際中,最大并發(fā)數(shù)與硬件性能和CPU數(shù)量有很大關(guān)系。更好的硬件和更多的處理器將使Tomcat支持更多的并發(fā)性。Tomcat 的默認H
tomcat可以支持多大并發(fā)量?
可以配置Tomcat的最大并發(fā)數(shù)。實際中,最大并發(fā)數(shù)與硬件性能和CPU數(shù)量有很大關(guān)系。更好的硬件和更多的處理器將使Tomcat支持更多的并發(fā)性。
Tomcat 的默認HTTP實現(xiàn)是使用阻塞套接字通信,每個請求都需要通過創(chuàng)建一個線程來處理。當一個進程有500個線程運行時,性能已經(jīng)很低了。Tomcat默認配置的最大請求數(shù)是150,這意味著同時支持150個并發(fā)請求。能承載多少并發(fā)取決于硬件配置。CPU越多性能越高,分配給JVM的內(nèi)存越多性能越高,但也會增加GC的負擔。當一個應(yīng)用程序有超過250個并發(fā)時,應(yīng)該考慮應(yīng)用服務(wù)器集群。t
操作系統(tǒng)對進程中的線程數(shù)量有一定的限制:
Windows每個進程不能有超過2000個線程。
Linux中每個進程的線程數(shù)不允許超過1000。
Java中,每個線程需要消耗1MB的JVM內(nèi)存空間用于線程棧,這里也要考慮。ttt
gc會引起線程異常嘛?
Gc是java垃圾收集,jvm內(nèi)存結(jié)構(gòu)分為堆區(qū)、方法區(qū)、棧區(qū)和本地方法區(qū)。其中堆區(qū)分為年輕一代和老一代。如果后輩沒有分配足夠的內(nèi)存,就會觸發(fā)gc,不會引起線程異常。gc是jvm獨立線程的責(zé)任,不會和業(yè)務(wù)線程。
aix系統(tǒng)jvm如何調(diào)整fullgc參數(shù)?
參考以下內(nèi)容:JVM的常用調(diào)試參數(shù):-v: GC在虛擬機有內(nèi)存回收時在輸出設(shè)備上顯示信息-xlog :文件名將GC相關(guān)的日志信息記錄到一個文件中進行分析-xx:-h:On
JVM-GC垃圾回收算法中,如何判定一個對象是否是可回收的對象?
首先,明確對象(引用)類型:
1軟參考軟參考是有用的,但不是必需的。使用軟引用,關(guān)聯(lián)的對象將在系統(tǒng)發(fā)生OOM(內(nèi)存不足)之前被回收。2弱引用3虛擬引用PhantomReference最弱,垃圾回收時會收到通知。
Top 4引新造。軟引用和弱引用只有jdk1.2才有,一般用強引用,內(nèi)存不足除外。軟引用和弱引用,有何時使用緩存。
如何判斷一個物體是否可以回收?
方法1:引用計數(shù)法
顧名思義,計算一個對象被引用的次數(shù)。但是引用計數(shù)法已經(jīng)落后了,可達性分析可以解決相互引用的問題(兩種方法都是基于強引用)。
方法2:可訪問性分析
可訪問性指的是GC Root是否能找到一個對象,如果找不到,這個對象可以粗略地(不是絕對地,以后)認為是可回收的。
以下對象可以用作GC根目錄:
注意不需要死記硬背??梢赃@樣想:Java中有四種變量——局部變量、靜態(tài)變量、常量和成員變量。方法區(qū)域中常量引用的對象是局部變量;虛擬機棧和本地方法棧是線程運行時創(chuàng)建的,其中引用的對象需要使用,不能回收。
遙不可及會被回收嗎?該對象不可訪問(第一次標記),如果finalize()方法沒有重新建立引用鏈(第二次標記),該對象將被回收。使用()保存對象。