1、JVM在大內存伺服器上怎麼充分利用硬體資源
1. 採用64位操作系統,並為JVM分配大內存
如果JVM中堆內存太小,那麼就會頻繁地發生垃圾內回容收,而垃圾回收都會伴隨不同程度的程序停頓,因此,如果擴大堆內存的話可以減少垃圾回收的頻率,從而避免程序的停頓。
2. 使用32位JVM集群
在一台伺服器上運行多個伺服器程序,這些程序都運行在32位的JDK上。然後再運行個伺服器作為反向代理伺服器,由它來實現負載均衡。
由於32位JDK最多支持2G內存,因此每個虛擬結點的堆內存可以分配1.6G,一共運行10個虛擬結點的話,這台物理伺服器可以擁有16G的堆內存。
2、java項目放伺服器上報jvm錯誤,但是伺服器上有一個javaweb項目在運行,請問這個是怎麼回事
類型轉換來錯誤,可能是有源jar包存在版本沖突。相同的方法名,但是參數不同。本地class load的順序和伺服器上的載入順序不同導致本地調用了正確的方法,但伺服器上調用了錯誤的方法。建議檢查報錯的類方法,在項目中的jar中是否存在多個。
3、jvm和WEB伺服器的作用
JSP的運行環境是JVM和Tomcat(一般是它)吧,JAVA虛擬機(JVM)是作用是解析並執行JAVA代碼.WEB伺服器就是Tomcat,EJB,或是WEBlogec,開啟WEB伺服器就可以對客戶提交的數據進行響應
4、JVM client模式和Server模式的區別
這里向大家描述一下JVM client模式和Server模式兩者的區別和聯系,JVM如果不顯式指定是-Server模式還是-client模式,JVM能夠根據下列原則進行自動判斷(適用於Java5版本或者Java以上版本)。
JVM client模式和Server模式
JVM Server模式與client模式啟動,最主要的差別在於:-Server模式啟動時,速度較慢,但是一旦運行起來後,性能將會有很大的提升。JVM如果不顯式指定是-Server模式還是-client模式,JVM能夠根據下列原則進行自動判斷(適用於Java5版本或者Java以上版本)。
前段時間有個同事給我發了個java跟c++性能比較的文章,其中有個對比圖引起了我的興趣,意外的是,我感興趣的不是java和c++的對比,而是java -Server模式和java -client模式的對比。從來沒想到兩者間的性能有如此巨大的差別。而在後來自己的親身測試中發現確實如此。
下面是我看到的那個對比圖:

圖中最顯著的就是JVM client模式和Server模式關於method call的對比,那個差別不是一般的大,在後來的測試中發現,相差至少有10倍。
下面是另外兩個對比圖:


JVM工作在Server模式可以大大提高性能,但應用的啟動會比client模式慢大概10%。當該參數不指定時,虛擬機啟動檢測主機是否為伺服器,如果是,則以Server模式啟動,否則以client模式啟動,J2SE5.0檢測的根據是至少2個CPU和最低2GB內存。
當JVM用於啟動GUI界面的交互應用時適合於使用client模式,當JVM用於運行伺服器後台程序時建議用Server模式。
JVM在client模式默認-Xms是1M,-Xmx是64M;JVM在Server模式默認-Xms是128M,-Xmx是1024M。我們可以通過運行:java -version來查看jvm默認工作在什麼模式。
5、Eclipse啟動Jboss伺服器,如何指定JVM虛擬內存大小?
eclipse指定JVM虛擬內存大小抄:
所有在襲-vmargs之後的參數將會被傳輸給JVM,所有如果所有對Eclipse 設置的參數必須寫在-vmargs之前(就如同你在命令行上使用這些參數一樣)
默認情況下,eclipse.ini的內容如下:
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
-vmargs
-Xms40m
-Xmx256m
上面的配置表示堆空間初始大小為40M,最大為256M,PermGen最大為256M。
6、如何將was伺服器的jvm調大
代碼
1.// {
2.// "phone" : ["12345678", "87654321"], // 數組
3.// "name" : "yuanfei89", // 字元串
4.// "age" : 100, // 數值
5.// "address" : { "country" : "china", "province" : "jiangsu" }, // 對象
6.// "married" : false // 布爾值
7.// }
8.
9.private static final String JSON =
10."{" +
11. " \"phone\" : [\"12345678\", \"87654321\"]," +
12. " \"name\" : \"yuanfei89\"," +
13. " \"age\" : 100," +
14. " \"address\" : { \"country\" : \"china\", \"province\" : \"jiangsu\" }," +
15. " \"married\" : false," +
16."}";
17.
18.try {
19. JSONTokener jsonParser = new JSONTokener(JSON);
20. // 此時還未讀取任何json文本,直接讀取就是一個JSONObject對象。
21. // 如果此時的讀取位置在"name" : 了,那麼nextValue就是"yuanfei89"(String)
22. JSONObject person = (JSONObject) jsonParser.nextValue();
23. // 接下來的就是JSON對象的操作了
24. person.getJSONArray("phone");
25. person.getString("name");
26. person.getInt("age");
27. person.getJSONObject("address");
28. person.getBoolean("married");
29.} catch (JSONException ex) {
30. // 異常處理代碼
31.}
7、如何設置代理伺服器使用的JVM
Java中,使用proxy是通過設置java環境變數來實現的,也就是JVM的系統屬性。我們需要設置三個內屬性,proxySetproxyHost和容proxyPort。proxySet是個boolean類型的,可以設置為true或者false,true代表使用代理伺服器。proxyHost是代理伺服器的
8、如何jvm監控linux伺服器
如何配置visualvm監控
visualvm支持在和windows上啟用圖形界面監控jvm的資源,但是如何可以使我們在windows上監控到遠程linux伺服器資源,這還需要做一些配置,此文是在原文基礎上做了更改的,希望對大家能有所幫助。
(1)首先要修改JDK中JMX服務的配置文件,以獲得相應的許可權:
進入$JAVA_HOME所在的根目錄的/jre/lib/management子目錄下,
a. 將jmxremote.password.template文件復制為jmxremote.password
b. 調整jmxremote.access和jmxremote.password的許可權為只讀寫,可以使用如下命令
chmod 600 jmxremote.access jmxremote.password
c. 打開jmxremote.password文件,去掉
# monitorRole QED
# controlRole R&D
這兩行前面的注釋符號
(2)修改env.sh
打開env.sh文件,並在JVM的啟動配置中添加如下信息:
JAVA_OPTS="-Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false -Djava.rmi.server.hostname=10.20.150.218 其他配置」
這幾個配置的說明如下:
-Dcom.sun.management.jmxremote.port:這個是配置遠程connection的埠號的,要確定這個埠沒有被佔用
-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false:這兩個是固定配置,是JMX的遠程服務許可權的
-Djava.rmi.server.hostname:這個是配置server的IP的,要使用server的IP最好在機器上先用hostname –i看一下IP是不是機器本身的IP,如果是127.0.0.1的話要改一下,否則遠程的時候連不上,目前我們的server上我已經都改好了
(3)Windows客戶端配置
JDK 1.6版本自帶visualvm,只需要進到bin目錄下啟動即可
啟動後頁面比較簡潔,配置也很簡單:
a. 點擊左側菜單的add Remote host,輸入server的IP,然後再advanced settings里配置埠(注意這個埠要和server上的埠一致)
b. 右擊剛才配置的IP,選擇JMX connection方式,再次輸入埠,就可以監視到JVM資源了
9、websphere伺服器jvm設置
最小值無所謂,主要是最大值不夠的話,程序如果用光了堆內存就會出錯退出。如果這台內機器是專用給一個 websphere 用的容話,可以把內存盡可能地設置大,比如最大12G -Xmx12288m 給 JVM。這個數字是說當 JVM 覺得內存緊張時就去嘗試申請堆內存直到達到了 -Xmx12288m 這個上限為止。當它覺得不需要這么多內存時它並不會立即去嘗試申請這么多,比如剛啟動時它只會申請比 -Xms512m 這樣的最小值略多一點的內存。
如果程序需要緩存較多數據時就可以盡量用最大內存,比如13G。像批量的數據在內存中比較和處理時。