tomcat
POSIX表示可移植操做系統接口(Portable Operating System Interface of UNIX,縮寫爲POSIX )
POSIX標準定義了操做系統應該爲應用程序提供的接口標準,是IEEE爲要在各類UNIX操做系統上運行的軟件而定義的一系列API標準的總稱
POSIX標準意在指望得到源代碼級別的軟件可移植性。
換句話說,爲一個POSIX兼容的操做系統編寫的程序,應該能夠在任何其它的POSIX操做系統(即便是來自另外一個廠商)上編譯執行。
API :應用程序編程接口,Application Programming Interface
ABI :
posix API
在A主機(windows)上開發的應用程序,在B主機(linux)編譯後,是能夠運行的(A/B主機都遵循posix標準,API相同)
在A主機(windows)上開發的應用程序,編譯後,在B主機(linux)是運行不了的,(A/B主機都遵循posix標準,ABI不一樣)
編程語言:
系統級:C,C++,go
應用級:C#,JAVA,Python,Perl,Ruby,php
虛擬機:..jvm,pvm
動態網站:asp .net jsp
動態網站:
客戶端動態:客戶端加載(服務器端的)源碼程序,在本地運行,直接返回結果
服務器動態:
CGI:通用網關接口
webapp server:
jsp:tomcat,jboss,jetty
php:php-fpm
編程語言類別:(指令+數據)
面向過程:以指令爲中心,圍繞指令組織數據 ---python,bash
面向對象:以數據爲中心,圍繞數據組織指令 ---java,python
商業實現:
websphere(IBM)
weblogic(oracle)
oc4j
jboss
開源實現:
tomcat ---標準的獨立web服務器,支持遠程部署管理
jetty ---輕量級,高效,能夠被嵌入到其它java代碼中使用
resin ---高性能的j2ee應用服務器,也支持php
-----------------------------------------------------------------------------------
Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬於輕量級應用服務器,在中小型系統和併發訪問用戶不是不少的場合下被廣泛使用,是開發和調試JSP 程序的首選。(由java語言開發的)
tomcat: .jsp--->翻譯成servlet文檔--->編譯爲「類」文件再運行(class文件);
java類程序比php程序性能高:
每一次訪問php都是邊編譯(解釋)邊執行
每一次訪問jsp代碼時,會被編譯成字節碼,且編譯好的字節碼不會刪除,會保存在磁盤上,下次再訪問時不用編譯直接加載該字節碼
jdk (jre,jvm) (跑任何java程序或軟件,都須要先安裝jdk)---[oracle]
tomcat (apache軟件基金會)
jboss wildfly (redhat)
weblogic (oracle)
websphere (IBM)
resin (CAUCHO)
tomcat 核心組件:
catalina:servlet container
coyote:http connection
jasper:jsp engine
tomcat 的開發語言:java
tomcat instance(tomcat實例):運行中的tomcat進程(Java進程)
server:即一個tomcat實例
service:用於將connector關聯至engine組件,一個service 只能包含一個engine組件和一個(或多個)connector組件;
engine:tomcat核心組件,用於運行jsp或servlert代碼
connector:接收並解析用戶請求,將請求映射爲engine中運行的代碼,以後將運行結果構建成響應報文;
支持http協議,ajp協議(apache jserv protocol,二進制協議---只有apache,tomcat支持)
host:相似於httpd中的虛擬主機
context:相似於httpd中的alias
connector---(server)--->engine :一個鏈接器(connector)只能有一個engine,一個engine能夠有多個鏈接器(connector);
注意:每一個組件都由「類」來實現,有些組件的實現不僅一種
頂級類組件:server
服務類組件:service
容器類組件:既能夠部署webapp(應用)的組件,eg:engine,host,context
鏈接器組件:connector
被嵌套類組件:value,logger,realm
常見組件:
1> 服務器:server:tomcat的一個實例,一般一個JVM只能包含一個tomcat實例;所以,一臺物理服務器上能夠在啓動多個JVM的狀況下在每個JVM中啓動一個tomcat實例,每個實例分屬於一個獨立的管理端口,這是一個頂級組件;
2> 服務:service:一個服務組件一般包含一個引擎和此引擎相關聯的一個或多個鏈接器,給服務命名能夠方便管理員在日誌文件中識別。
鏈接器類組件:
3> 鏈接器:connector:負責鏈接客戶端(能夠是瀏覽器或web服務器)請求至servlet容器內的web應用程序,一般指的是接收客戶發來請求的位置及服務器端分配的端口,默認端口一般是HTTP協議的8080,也可根據須要修改此端口;一個引擎能夠配置多個鏈接器,但這些鏈接器必須使用不一樣的端口。默認的鏈接器是基於HTTP/1.1的Coyote。同時,tomcat也支持AJP,JServ和JK2鏈接器。
容器類組件:
4> 引擎:engine:指處理請求的servlet引擎組件,即catalina servlet引擎,它檢查每個請求的HTTP首部信息以辨別此請求該發往哪一個host或context,而且將請求處理後的結果返回相應的客戶端;一個引擎能夠包含多個host組件。
5> 主機:host:主機組件相似於apache中的虛擬主機;一個引擎至少包含一個主機組件
6> 上下文:context:是最內層次的組件,表示應用程序自己,配置一個context最主要的是指定web應用程序的根目錄,以便Servlet容器可以將用戶的請求發往正確的位置,context組件也能夠包含自定義的錯誤頁,以實如今用戶訪問發生錯誤時提供友好的信息提示。
被嵌套類組件:nested:這類組件一般包好於容器類組件中以提供具備管理功能的服務,它們不包含其它組件,卻能夠有不一樣層次的容器各自配置。
7> 閥門:value:用來攔截請求並將其轉至目標以前進行某種操做。value能夠定義在任何容器類組件中。value一般被用來記錄客戶端請求、客戶端IP地址和服務器等信息
8> 日誌記錄器:logger:用來記錄組件內部的狀態信息,能夠被用於除context以外的任何容器中;日誌記錄的功能能夠被繼承。
9> 領域:realm:用於用戶的認證和受權;在配置一個應用程序時,管理員能夠爲每一個資源或資源組定義角色和權限,而這些訪問控制能須要經過realm來實現;realm的認證能夠基於文本文件、數據庫表、LDAP服務器來實現。realm的效用會遍佈整個引擎或頂級容器。所以一個容器內的全部應用程序將共享用戶資源。realm能夠被其所在組件的子組件繼承。
tomcat 主配置文件結構:
<server>
<service>
<connector />
<connector />
......
<engine>
<host name="">
</host>
<host name="">
</host>
<host>
<context />
<context />
</host>
</engine>
</service>
</server>
tomcat集羣:
nginx(反向代理)+tomcat
haproxy ---- nginx(反向代理)+tomcat
nginx(反向代理)+tomcat
會話保持:基於cooker/url-parame/user_id/ip 綁定
高可用:三臺主機作成session集羣;或共享的session server(即全部的session放在session server,而不放在tomcat本地)
tomcat的運行模式:
1>standlone(獨立):經過內置的web server(http connector)來接收客戶端請求;
2>proxy:由專門的web server來服務客戶端的http請求;
兩種機制:in-process:部署於同一主機;
network:部署於不一樣的主機;
tomcat做爲應用程序服務器:請求來自於前端的web服務器,這多是apache,IIS,nginx等;
tomcat做爲獨立服務器:請求來自於web瀏覽器;
tomcat上運行java程序:
(默認監聽8080端口)不須要用到管理員權限,因此能夠以普通用戶身份來運行;
若修改tomcat的監聽端口爲80,則可能須要以管理員身份來運行;
若某個服務監聽的端口小於1023的特權端口上,則須要以管理員身份運行;不然以普通用戶運行便可;
---------------------------------------------------------------------------------------
安裝 tomcat
apache + tomcat
官網地址: http://tomcat.apache.org/
(1)安裝jdk
java -version ----查看本機默認使用的java版本
【百度jdk便可下載(有rpm版和tar.gz版) 或 本地源的openjdk版(yum list all|grep jdk)】
tar xf jdk-8u45-linux-x64.tar.gz -C /usr/local/
mv /usr/local/jdk1.8.0_45/ /usr/local/java/
(或者作個軟鏈接:ln -s /usr/local/jdk1.8.0_45/ /usr/local/java/)
(2)解壓安裝新版本tomcat
tar xf apache-tomcat-8.0.20.tar.gz -C /usr/local/
mv /usr/local/apache-tomcat-8.0.20/ /usr/local/tomcat
(3)tomcat的環境變量的定義
定義在單個tomcat的啓動和關閉程序裏
vim /usr/local/tomcat/bin/startup.sh
vim /usr/local/tomcat/bin/shutdown.sh
把startup.sh和shutdown.sh這兩個腳本里的最前面(但要在#!/bin/bash下在)加上下面一段
export JAVA_HOME=/usr/local/java
export TOMCAT_HOME=/usr/local/tomcat
export CATALINA_HOME=/usr/local/tomcat
export CLASS_PATH=$JAVA_HOME/bin/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tool.jar
export PATH=$PATH:/usr/local/java/bin:/usr/local/tomcat/bin
啓動方法
/usr/local/tomcat/bin/startup.sh
關閉方法
/usr/local/tomcat/bin/shutdown.sh
家目錄路徑:
/usr/local/tomcat/webapps/ROOT/
修改監聽端口
vim /usr/local/tomcat/conf/server.xml
<Connector port="80" protocol="HTTP/1.1" --把8080改爲80的話重啓後就監聽80
connectionTimeout="20000"
redirectPort="8443" />
--測試後再改回8080端口
訪問:http://192.168.1.114:8080
目錄佈署:
mkdir /usr/local/tomcat/webapps/abc ---把abc目錄與ROOT同級或者是在ROOT的下一級都是可行的
vim /usr/local/tomcat/webapps/abc/time.jsp
<html>
<body>
<center>
<H1><%=new java.util.Date()%></H1>
</center>
</body>
</html>
訪問:http://192.168.1.114:8080/abc/time.jsp
部署應用:
jspxcms 一個開源的java cms系統jspxcms(java內容管理系統)
<1>解壓jspxcms
rm /usr/local/tomcat/webapps/ROOT/* -rf ---解壓以前先刪除原來家目錄裏的文件
unzip jspxcms-5.2.4-release.zip -d /usr/local/tomcat/webapps/
(將解壓後的正文的文件放置:/usr/local/tomcat/webapps/ROOT目錄下)
<2>去mysql建一個庫,進行受權
yum install mysql* -y
/etc/init.d/mysqld restart
mysql
mysql> create database jspxcms;
mysql> grant all on jspxcms.* to 'li'@'localhost' identified by '123';
mysql> flush privileges;
<3>使用firefox的下面路徑按照它的步驟進行安裝
http://IP:8080/
<4>重啓tomcat後,再使用下面路徑訪問就能夠了
/usr/local/tomcat/bin/shutdown.sh
/usr/local/tomcat/bin/startup.sh
前臺訪問地址:
http://IP:8080/
後臺訪問地址:(須要admin用戶和其密碼登陸纔有權限)
http://IP:8080/cmscp/index.do
----------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------
說明:
<1>若安裝rpm版的jdk:
rpm -ivh jdk-8u45-linux-x64.rpm
(安裝至/usr/java/jdk1.7.0_45/......)
需配置環境變量:
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest ----java路徑
export PATH=$JAVA_HOME/bin:$PATH
(再重讀取該文件)
<2>安裝tomcat
tar xf apache-tomcat-8.0.20.tar.gz -C /usr/local/
(安裝完後)
vim /etc/profile.d/tomcat.sh
export CATALINA_HOME=/usr/local/tomcat
export PATH=$CATALINA_HOME/bin:$PATH
catalina.sh --help
/usr/local/tomcat/bin/catalina.sh configtest 檢查語法錯誤
啓動tomcat
/usr/local/tomcat/bin/catalina.sh start
lsof -i:8080
java 3094 root 49u IPv6 44620 0t0 TCP *:webcache (LISTEN)
----------------------------------------------------------------------------------------------------
tomcat自帶的應用程序:
manager app:webapp 管理工具
host manager:virtual hosts 管理工具
[server status:manager中的子組件]
tomcat目錄結構:
bin:腳本以及啓動時用到的類
lib:類庫
conf:配置文件
logs:日誌文件
webapps:應用程序默認部署目錄
work:工做目錄
temp:臨時文件目錄
配置文件:
server.xml:主配置文件
context.xml:每一個webappp均可以有專用的配置文件,這些配置文件一般位於webapp應用程序目錄下的WEB.INF目錄中,用於定義會話管理器,JDBC等,conf/context.xml是爲各webapp提供默認配置;
web.xml:每一個webapp部署以後才能被訪問,此文件用於爲全部的webapp提供默認的相關的配置;
tomcat-users.xml:用戶認證的帳號和密碼配置文件;
catalina.policy:當使用-security選項啓動tomcat實例時會讀取此配置文件來實現其安全運行策略;
catalina.properties:java屬性的定義文件,用於定義類加載器路徑等,以及一些jvm性能相關的調優參數;
logging.properties:日誌相關的配置信息;
java webapp 組織結構:
有特定的組織形式,層次型的目錄結構:主要包含了servlet代碼文件,jsp頁面文件,類文件,部署描述符文件等
/usr/local/tomcat/webapps/app1/
/:webapp的根目錄
WEB-INFO:當前webapp的私有資源目錄,一般存放當前webapp自用的web.xml
META-INFO:當前webapp的私有資源目錄,一般存放當前webapp自用的context.xml
classes:此webapp的私有類
lib:此webapp的私有類,被打包爲jar格式類
index.jsp:webapp的主頁
某應用程序的新版本(內有不少文件)要部署在另外一主機上,可將其打包(其格式):
webapp歸檔格式:
.war:webapp(web 應用程序)
.jar:EJB的類
.rar:資源適配器
.ear:企業級的應用程序
手動添加一個應用程序:
1>建立webapp特有的目錄結構:
mkdir /usr/local/tomcat/webapps/myapp
mkdir /usr/local/tomcat/webapps/myapp/{lib,classes,WEB-INFO,META-INFO}
2>提供webapp各文件
(建立測試頁面)
vim /usr/local/tomcat/webapps/myapp/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
<head>
<title>JSP Test Page</title>
</head>
<body>
<% out println("hello,world");%>
</body>
</html>
部署(deployment)webapp相關的操做:
deploy:部署:將webapp的源文件旋轉於目標目錄,配置tomcat服務器可以基於context.xml文件中定義的路徑來訪問此webapp;將其特有的類經過class loader裝載至tomcat;
部署有兩種方式:
自動部署:auto deploy
手動部署:
1>冷部署:把webapp複製到指定位置,而後才啓動tomcat;
2>熱部署:在不中止tomcat的前提下進行的部署;依賴於部署工具:manager、ant腳本、tcd(tomcat client deploy)等;
undeploy:反部署:中止webapp,並從tomcat上拆除其部分文件和部署名;
stop:中止:再也不向用戶提供服務;其應用程序類文件仍然在java虛擬機上;
start:啓動處於"中止"狀態的webapp;
redeploy:從新部署
-----------------------------------------------------------------------
tomcat自帶的應用程序:
manager app:webapp 管理工具
host manager:Virtual Hosts 管理工具
圖形界面部署:
(基於用戶名和密碼)
vim /usr/local/tomcat/conf/tomcat-usrs.xml
...
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>
...
須要重啓tomcat
在圖形界面點擊:Manager App-->
(熱部署):
Deploy directory or WAR file located on server:
Context Path (required):/myapp2 ---部署的路徑
XML Configuration file URL: ---web.xml文件路徑
WAR or Directory URL: ---.war文件路徑
--------------------------------------------------------------------------
server.xml配置說明:
<Server port="8005" shutdown="SHUTDOWN"> ---關閉8005端口,能夠直接關閉掉tomcat
......
#定義的http鏈接:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
定義鏈接器時能夠配置的屬性有不少,但一般定義HTTP鏈接器時必須定義的屬性只有"port",定義AJP鏈接器時必須定義的屬性只有「protocol」;默認的協議爲http協議:
1> address:指定鏈接器監聽的地址,默認爲全部地址,即0.0.0.0;
2> maxThreads:支持的最大併發數;
3> port:監聽的端口;
4> protocol:鏈接器使用的協議,默認爲HTTP/1.0,定義AJP協議一般爲AJP/1.3;
5> redirectPort:若是某鏈接器支持的協議是HTTP,當接收客戶端發來的HTTPS請求時,則轉發至此屬性定義的端口;
6> connectionTimeout:等待客戶端發送請求的超時時間,單位爲毫秒ms
7> enableLookups:是否經過request.getRomoteHost()進行DNS查詢以獲取客戶端的主機名,默認爲true;
8> acceptCount:設置等待隊列的最大長度:一般在tomcat全部處理線程均處於繁忙狀態時,新發來的請求將被放置於等待隊列中;
#定義了多個屬性的SSL鏈接器:
<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS" />
4)engine組件
<Engine name="Catalina" defaultHost="localhost">
engine是servlet處理器的一個實例,即servlet引擎,默認定義在server.xml中的Catalina段。engine須要defaultHost屬性來爲其定義一個接收全部發往非明肯定義虛擬主機的請求的host組件
經常使用的定義屬性:
defaultHost:
name:engine組件的名稱,用於日誌和錯誤信息記錄時區分不一樣的引擎;
jvmRoute:
Engine容器中能夠包含Realm,Host,Listener和Value子容器。
5)Host組件:
位於Engine容器中,用於接收請求並進行相應處理的主機或虛擬主機:
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
</Host>
經常使用屬性說明:
appBase:此Host的webapps的目錄,即存放非歸檔的web應用程序的目錄或歸檔後的war文件的目錄;可使用基於:$CATALINA_HOME的相對路徑;
autoDeploy:在tomcat處於運行狀態時放置於appBase目錄中的應用程序文件是否自動進行deploy;默認爲true;
unpackWARs:在啓用此webapps時是否對war格式的歸檔文件先進行展開:默認爲true;
虛擬主機定義:
<Engine name="Catalina" defaultHost="localhost">
<Host name="localhost" appBase="webapps">
<context path="" docBase="ROOT" />
<context path="/bbs" docBase="/web/bbs"
reloadable="true" crossContext="true"
</host>
<Host name="mail.magedu.com" appBase="/web/mail">
<context path="/" docBase="ROOT" />
</host>
<Host name="web3.magedu.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="false">
<context path="" docBase="/data/webapps" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
prefix="web3_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</host>
<Host name="web1.magedu.com" appBase="/data/webapps" unpackWARs="true" autoDeploy="true">
<context path="" docBase="ROOT" reloadable="true" />
<Valve className="org.apache.catalina.valves.valves.RemoteAddrValue"
deny="192.168.1.100" />
</context>
<context path="/shop" docBase="shopxx" reloadable="true" />
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="/data/logs"
prefix="web3_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</host>
</Engine>
注:path給定的路徑不能以/結尾
建立相應目錄:
mkdir /usr/local/tomcat/conf/data/{webapps,logs} -pv
將應用部署在/usr/local/tomcat/conf/data/webapps下
主機別名定義:
一個主機有兩個或多個主機名,額外的名稱能夠以別名形式進行定義:
<Host name="www.magedu.com" appBase="/web/mail" unpackWARs="true" >
<Alias>magedu.com</Alias>
</Host>
6)context組件
context在某些意義上相似於apache中的路徑別名,一個Context定義用於標識tomcat實例中的一個web應用程序。每個context定義也可使用一個單獨的xml文件進行,其文件的目錄爲$CATALINA_HOME/conf/<engine name>/<host name>。能夠用於context中 的xml元素有Loader,Realm,Resource和WatchhResource
經常使用屬性說明:
docBase:相應的web應用程序的存放位置,也可使用相對路徑,,起始路徑爲此Context所屬的Host中appBase定義的路徑;docBase的路徑名不能與相應的Host中appBase中定義的路徑有包含關係;
path:相對於web服務器根路徑而言的URI,若是爲空"",則表示爲此webapp的根路徑;若是context定義在一個單獨的xml文件中,此屬性不需定義;
reloadable:是否容許從新加載此context相關的web應用程序的類:默認爲false;
7)Realm組件
一個realm表示一個安全上下文,它是一個受權訪問某個給定的context的用戶列表和某用戶所容許切換的角色相關定義的列表。所以,realm
-----------------------------------------------------------------------------------
LNMP:
nginx(反代)+tomcat
nginx/haprox ----- nginx(反代)+tomcat
nginx(反代)+tomcat
client --> http --> nginx --> reverse_proxy --> http --> tocat(http concector)
其配置:
location ~* \.(jsp|do)$ {
proxy_pass http://web1.cluster.com:8080;
}
LAMP:
apache(反代)+tomcat
nginx/haprox ----- apache(反代)+tomcat
apache(反代)+tomcat
client --> http --> httpd --> reverse_proxy --> http或 ajp --> tocat(http concector或ajp conncector)
反代模塊:
主模塊:proxy_module
子模塊:proxy_module_http,proxy_module_ajp
LANMP
#######################################################################################################
JVM虛擬機
JVM管理的內存段可分爲兩大類:線程共享內存和線程私有內存
線程共享內存:
方法區:存儲jvm加載的class,常量,靜態變量,即時編譯器編譯後的代碼等
Java堆:存儲java的全部對象實例,數組等
線程私有內存:
程序計數寄存器:每一個線程都有本身的計數寄存器,存儲當前線程執行字節碼的地址;
jvm棧:jvm會爲每一個運行線程分配一個棧區,線程調用方法時和方法返回時會進行入棧和出棧操做;
本地方法棧區:與jvm stack相似,只不過此區域是爲調用本地方法服務
JVM HEAP內存空間:
新生代:
新生區:Dden:初創對象
存活區:survivor:步入成熟區的初創對象:
ss1:
ss2:
老年代:
mark(先標記)---->compact
持久代:
垃圾回收器:
新生代回收:Minor GC
老年代回收:Major GC (Full GC)
堆內存空間的調整參數:
-Xmx:新生代和老年代總共可用的最大空間;
-Xms:兩者初始空間之和;
-XX:NewSize:新生代初始空間;
-XX:MaxNewSize:新生代的最大空間;
-XX:MaxPermSize:持久代最大空間;
-XX:PermSize:持久代初始空間;
tomcat而言:
Catalina.sh中有兩個環境變量:
CATALINA_OPTS:僅對啓動運行tomcat實例的java虛擬機有限;
JAVA_OPTS:對本機上全部的Java虛擬機有限;
性能監控工具:
問題:
OutOfMemoryError:內存不足:
內存泄漏:
線程鎖死:
鎖競爭:Lock Contention
java消耗過多的CPU
jps:java virtual machine process status tool 監控jvm進程狀態信息
jps [options] [hostid]
-m:輸出傳入main方法的參數;
-l:顯示main類或jar的徹底限定名稱;
-v:顯示爲jvm虛擬機指定的參數;
jstack:查看某個java進程內的線程堆棧信息
jstack [options] pid
選項:
-l long strings:輸出完成的鎖信息;
-m :混合模式:即會輸出java堆棧及C/C++堆棧信息;
jmap和jhat:
jmap:jvm memory map:查看堆內存使用狀況;
jhat:java heap analysis tool
jmap [options] pid
-heap:詳細堆內存空間使用狀態信息
-histo[:live]:查看堆內存中的對象數目,大小統計結果
jstat:jvm統計監控工具
jstat -<options> [-t] [-h<lines>] <vmid> [<interal> [<count>]]
其中option爲必須提供的選項,全部可用選項可用jstat -option列出
-class
-compile
-gc
-gccapacity
-gccaus
......
字段意義:
S0C,S1C,S0U,S1U:C表示容量,U表示已用量;
EC,EU:Eden區域的容量和已用量;
OC,OU:
PC,PU:
YGC,YGT:新生代的GC次數和耗時;
FGC,FGCT:Full GC 次數和耗時;
GCT:GC總耗時;
兩個GUI工具:jconsole,jvisualvm