如何查看伺服器上jvm版本號
㈠ 如何查看GC 及jvm配置
java雖然是自動回收內存,但是應用程序,尤其伺服器程序最好根據業務情況指明內存分配限制。否則可能導致應用程序宕掉。
舉例說明含義:
-Xms128m
表示JVM Heap(堆內存)最小尺寸128MB,初始分配
-Xmx512m
表示JVM Heap(堆內存)最大允許的尺寸256MB,按需分配。
說明:如果-Xmx不指定或者指定偏小,應用可能會導致java.lang.OutOfMemory錯誤,此錯誤來自JVM不是Throwable的,無法用try...catch捕捉。
PermSize和MaxPermSize指明虛擬機為java永久生成對象(Permanate generation)如,class對象、方法對象這些可反射(reflective)對象分配內存限制,這些內存不包括在Heap(堆內存)區之中。
-XX:PermSize=64MB 最小尺寸,初始分配
-XX:MaxPermSize=256MB 最大允許分配尺寸,按需分配
過小會導致:java.lang.OutOfMemoryError: PermGen space
MaxPermSize預設值和-server -client選項相關。
-server選項下默認MaxPermSize為64m
-client選項下默認MaxPermSize為32m
經驗:
1、慎用最小限制選項Xms,PermSize已節約系統資源。
=========================================================
近期研究對jvm的內存使用情況進行監控,因此對觀察虛擬機的內存使用方法做了一些收集,對jvm的參數設置了解了一下:
幾個基本概念:
PermGen space:全稱是Permanent Generation space,即永久代。就是說是永久保存的區域,用於存放Class和Meta信息,Class在被Load的時候被放入該區域,GC(Garbage Collection)應該不會對PermGen space進行清理,所以如果你的APP會LOAD很多CLASS的話,就很可能出現PermGen space錯誤。
Heap space:存放Instance。Java Heap分為3個區,Young即新生代,Old即老生代和Permanent。Young保存剛實例化的對象。當該區被填滿時,GC會將對象移到Old區。Permanent區則負責保存反射對象。
幾個參數設置的意義:
xms/xmx:定義YOUNG+OLD段的總尺寸,ms為JVM啟動時YOUNG+OLD的內存大小;mx為最大可佔用的YOUNG+OLD內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
NewSize/MaxNewSize:定義YOUNG段的尺寸,NewSize為JVM啟動時YOUNG的內存大小;MaxNewSize為最大可佔用的YOUNG內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
PermSize/MaxPermSize:定義Perm段的尺寸,PermSize為JVM啟動時Perm的內存大小;MaxPermSize為最大可佔用的Perm內存大小。在用戶生產環境上一般將這兩個值設為相同,以減少運行期間系統在內存申請上所花的開銷。
SurvivorRatio:設置YOUNG代中Survivor空間和Eden空間的比例
申請一塊內存的過程:
A. JVM會試圖為相關Java對象在Eden中初始化一塊內存區域
B. 當Eden空間足夠時,內存申請結束。否則到下一步
C. JVM試圖釋放在Eden中所有不活躍的對象(這屬於1或更高級的垃圾回收);釋放後若Eden空間仍然不足以放入新對象,則試圖將部分Eden中活躍對象放入Survivor區/OLD區
D. Survivor區被用來作為Eden及OLD的中間交換區域,當OLD區空間足夠時,Survivor區的對象會被移到Old區,否則會被保留在Survivor區
E. 當OLD區空間不夠時,JVM會在OLD區進行完全的垃圾收集(0級)
F. 完全垃圾收集後,若Survivor及OLD區仍然無法存放從Eden復制過來的部分對象,導致JVM無法在Eden區為新對象創建內存區域,則出現」out of memory錯誤」
我們的一種resin伺服器的jvm參數設置:
「-Xmx2000M -Xms2000M -Xmn500M -XX:PermSize=250M -XX:MaxPermSize=250M -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=1 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:+UseCMSCompactAtFullCollection -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:=60 -XX:SoftRefLRUPolicyMSPerMB=0 -XX:+PrintClassHistogram -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintHeapAtGC -Xloggc:log/gc.log」
是一種典型的響應時間優先型的配置。
Java中有四種不同的回收演算法,對應的啟動參數為
–XX:+UseSerialGC
–XX:+UseParallelGC
–XX:+UseParallelOldGC
–XX:+UseConcMarkSweepGC
1. Serial Collector
大部分平台或者強制 java -client 默認會使用這種。
young generation演算法 = serial
old generation演算法 = serial (mark-sweep-compact)
這種方法的缺點很明顯,stop-the-world, 速度慢。伺服器應用不推薦使用。
2. Parallel Collector
在linux x64上默認是這種,其他平台要加 java -server 參數才會默認選用這種。
young = parallel,多個thread同時
old = mark-sweep-compact = 1
優點:新生代回收更快。因為系統大部分時間做的gc都是新生代的,這樣提高了throughput(cpu用於非gc時間)
缺點:當運行在8G/16G server上old generation live object太多時候pause time過長
3. Parallel Compact Collector (ParallelOld)
young = parallel = 2
old = parallel,分成多個獨立的單元,如果單元中live object少則回收,多則跳過
優點:old old generation上性能較 parallel 方式有提高
缺點:大部分server系統old generation內存佔用會達到60%-80%, 沒有那麼多理想的單元live object很少方便迅速回收,同時compact方面開銷比起parallel並沒明顯減少。
4. Concurent Mark-Sweep(CMS) Collector
young generation = parallel collector = 2
old = cms
同時不做 compact 操作。
優點:pause time會降低, pause敏感但CPU有空閑的場景需要建議使用策略4.
缺點:cpu佔用過多,cpu密集型伺服器不適合。另外碎片太多,每個object的存儲都要通過鏈表連續跳n個地方,空間浪費問題也會增大。
內存監控的方法:
1. jmap -heap pid
查看java 堆(heap)使用情況
using thread-local object allocation.
Parallel GC with 4 thread(s) //GC 方式
Heap Configuration: //堆內存初始化配置
MinHeapFreeRatio=40 //對應jvm啟動參數-XX:MinHeapFreeRatio設置JVM堆最小空閑比率(default 40)
MaxHeapFreeRatio=70 //對應jvm啟動參數 -XX:MaxHeapFreeRatio設置JVM堆最大空閑比率(default 70)
MaxHeapSize=512.0MB //對應jvm啟動參數-XX:MaxHeapSize=設置JVM堆的最大大小
NewSize = 1.0MB //對應jvm啟動參數-XX:NewSize=設置JVM堆的『新生代』的默認大小
MaxNewSize =4095MB //對應jvm啟動參數-XX:MaxNewSize=設置JVM堆的『新生代』的最大大小
OldSize = 4.0MB //對應jvm啟動參數-XX:OldSize=
NewRatio = 8 //對應jvm啟動參數-XX:NewRatio=:『新生代』和『老生代』的大小比率
SurvivorRatio = 8 //對應jvm啟動參數-XX:SurvivorRatio=設置年輕代中Eden區與Survivor區的大小比值
PermSize= 16.0MB //對應jvm啟動參數-XX:PermSize=
MaxPermSize=64.0MB //對應jvm啟動參數-XX:MaxPermSize=
Heap Usage: //堆內存分步
PS Young Generation
Eden Space: //Eden區內存分布
capacity = 20381696 (19.4375MB) //Eden區總容量
used = 20370032 (19.426376342773438MB) //Eden區已使用
free = 11664 (0.0111236572265625MB) //Eden區剩餘容量
99.94277218147106% used //Eden區使用比率
From Space: //其中一個Survivor區的內存分布
capacity = 8519680 (8.125MB)
used = 32768 (0.03125MB)
free = 8486912 (8.09375MB)
0.38461538461538464% used
To Space: //另一個Survivor區的內存分布
capacity = 9306112 (8.875MB)
used = 0 (0.0MB)
free = 9306112 (8.875MB)
0.0% used
PS Old Generation //當前的Old區內存分布
capacity = 366280704 (349.3125MB)
used = 322179848 (307.25464630126953MB)
free = 44100856 (42.05785369873047MB)
87.95982001825573% used
PS Perm Generation //當前的 「永生代」 內存分布
capacity = 32243712 (30.75MB)
used = 28918584 (27.57891082763672MB)
free = 3325128 (3.1710891723632812MB)
89.68751488662348% used
=====================================================================
jps
-q只輸出進程ID,而不輸出類的短名稱
-m用於輸出傳遞給Java進程(主函數)的參數
-l完整路徑
-v顯示傳遞給jvm的參數
㈡ 如何查看Linux無盤伺服器當前版本號和中心版本號
你把Linux 先關掉,用螺絲刀,然後找到一塊正方形,銀色,可以發光的,你把它拿出來用腳踩個50下,放回去裝起來,然後打開,就會告訴你版本號,中心版本號了
㈢ 如何查看linux伺服器的版本和配置信息
查看系統版本:lsb_release -a
查看版本信息:cat /etc/redhat-release
知識擴展:
也可以獲取伺服器的信息:hostname
查看系統內核uname –a 查看操作系統的版本(我現在只用過redhat,所以只以這個為例)
cat /etc/redhat-release
查看網路配置信息ifconfig
㈣ 如何查看jvm版本
寫個程序如下:
public class VersionDemo {
public static void main (String args[]) {
System.out.println("jvm 實現版本:\t" + System.getProperty("java.vm.version"));
System.out.println("jvm 規范版本:\t" + System.getProperty("java.vm.specification.version"));
}
}
第一個實現版本就是你裝的版本。
㈤ 請教如何查看LINUX伺服器下的JRE版本
不能。windows和linux是兩種不同的操作系統,架構不一樣,所以上面的運行的軟體也是分操作系統的,在linux下使用jre,就下載個linux版本的jre包 jre.tar.gz這種形式的
㈥ 如何查看web伺服器的名稱和版本號
看ttl這個是不能看出網站伺服器用的是什麼系統
常用的web伺服器
微軟的iis
apache
Nginx
Zeus Web Server
……
目前apache和LINUX搭配用的最多,騰訊的就是……
如果伺服器設置隱藏操作系統信息,你是什麼都看不到的,
我上次查看了下,網路的伺服器操作系統是BWS,你聽過這樣的系統嗎?它其實是Bai Web Server的簡寫!谷歌也是一樣!
如果web伺服器是iis,那他就是windows 伺服器, 如果是apache和其他的,那就不好猜測了,
apache可以運行在windows ,LINUX ,unix很多環境下的……
總之:伺服器信息不是很容易得到的……
㈦ 如何查看linux伺服器的版本和配置信息
linux下看配置,可沒有windows那麼直觀。你只能一個一個查看。
一:cpu
[root@srv /]# more /proc/cpuinfo | grep "model
name"
[root@srv /]# grep "model name"
/proc/cpuinfo
二:內存
[root@srv /]# grep MemTotal /proc/meminfo
三:查看CPU位數(32 or 64)
[root@srv /]# getconf LONG_BIT
61.linxu學習過程
這個問題網上在千萬個答案。好吧,我說下我的想法。 linux學習不局限於什麼版本(版本之間的不同主要在包管理,差別不大的)。 對於菜鳥來說可以先把自己的linux系統裝好。04桌面教程。 熟悉桌面以後,看看《linux就該這么學》這個幾乎所有學習LINUX的人都會看。 不要好高騖遠哦,以前我就下了一大堆教程,沒有怎麼看,我主要是去看的書!
㈧ JVM和Java HotSpot如何區分版本
你的虛擬機(JVM)版本是23.5-b02
java -version出來信息包含兩部分:Java軟體包發行版本信息和內核(JVM)版本信息。
java的發行包包含三種類型Java ME,Java SE,Java EE,發行包就相當於對外銷售的產品包,不同發行包會刪減部分特性,因此版本信息首先顯示發行包類型和版本。
JVM是Java平台的基礎和核心,一般在一個java大版本中JVM版本變化都是比較小的。HotSpot是一種JVM實現技術,相對以往的方式在性能和擴展能力上得到了很大的提升,因此它不是一個獨立產品,可以理解Sun(Oracle)實現的JVM版本的品牌商標。
㈨ 如何查看elasticsearch版本
1、一般情況下如果es服務正常啟動,可以通過介面的方式獲取elasticsearch版本信息:
curlhttp://127.0.0.1:9200
上述命令可以得到elasticsearch的服務狀態和其他信息包括版本號。
2、如果elasticsearch沒有啟動,則可以直接找到es的lib包來確認版本號,使用以下命令
lllib|grep'elasticsearch-d.d.d.jar'
可以得到如elasticsearch-1.7.4.jar類似的結果,1.7.4即為其版本號。
(9)如何查看伺服器上jvm版本號擴展閱讀
Elasticsearch的優點介紹:
Elasticsearch可以用於搜索各種文檔。它提供可擴展的搜索,具有接近實時的搜索,並支持多租戶。
Elasticsearch是分布式的,這意味著索引可以被分成分片,每個分片可以有0個或多個副本。每個節點託管一個或多個分片,並充當協調器將操作委託給正確的分片。再平衡和路由是自動完成的。
Elasticsearch使用Lucene,它支持facetting和percolating,如果新文檔與注冊查詢匹配,這對於通知非常有用。另一個特性稱為「網關」,處理索引的長期持久性;例如,在伺服器崩潰的情況下,可以從網關恢復索引。