Java之父:詹姆斯·高斯林html
三個版本:java
$ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz" $ tar zxf jdk-8u141-linux-x64.tar.gz -C /usr/local/ $ vi /etc/profile export JAVA_HOME=/usr/local/jdk1.8.0_141 export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH $ source /etc/profile
JDK(Java Development Kit)
JRE(Java Runtime Environment)
JVM(Java Virtual Machine)linux
官方結構圖:https://docs.oracle.com/javase/8/docs/web
1.自身運行時數據(Mark Word)算法
類型指針apache
1.使用句柄
2.直接指針ubuntu
在對象中添加一個引用計數器,當有地方引用這個對象時計數器的值就+1,當引用失效時,計數器的值就-1
弊端:當對象循環引用時不能識別是否爲垃圾對象
*基本沒有JVM在使用瀏覽器
做爲GCroot的對象tomcat
JDK8使用的垃圾回收器: parallel安全
堆
面向服務端應用的垃圾收集器
優點:
運做步驟:
https://docs.oracle.com/javase/8/docs/technotes/tools/index.html#
jenkins@ubuntu-OptiPlex-7040:~$ jps 13154 Bootstrap 12191 Jps
參數:
# -l :虛擬機執行主類名稱或者jar包的名稱 jenkins@ubuntu-OptiPlex-7040:~$ jps -l 13154 org.apache.catalina.startup.Bootstrap 12462 sun.tools.jps.Jps
# -m :主類接收的參數 jenkins@ubuntu-OptiPlex-7040:~$ jps -m 13154 Bootstrap start 12552 Jps -m
# -v :JVM接收的參數 jenkins@ubuntu-OptiPlex-7040:~$ jps -v 13154 Bootstrap -Djava.util.logging.config.file=/home/jenkins/tomcat/jenkins/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -Dcatalina.base=/home/jenkins/tomcat/jenkins -Dcatalina.home=/home/jenkins/tomcat/jenkins -Djava.io.tmpdir=/home/jenkins/tomcat/jenkins/temp 12675 Jps -Denv.class.path=.:/home/ubuntu/software/jdk/jdk1.8.0_151/lib:/home/ubuntu/software/jdk/jdk1.8.0_151/jre/lib -Dapplication.home=/home/ubuntu/software/jdk/jdk1.8.0_151 -Xms8m
虛擬機統計信息監控:類裝載、內存、垃圾收集、JIT編譯等運行數據
實時查看和調整虛擬機各項參數
生產堆轉儲快照
$ jmap -dump:format=b,file=jenkins.bin 13154 Dumping heap to /home/jenkins/jenkins.bin ... Heap dump file created
-XX:+HeapDumpOnOutofMemoryError : 虛擬機在OOM異常出現後自動生成dump文件
# 顯示堆中對象通訊信息 $ jmap -histo 13154 | less
功能:分析jamp生成的堆轉儲快照
通常不會在生產服務器上進行分析,很是耗CPU和內存,不經常使用
jenkins@ubuntu-OptiPlex-7040:~$ jhat jenkins.bin Reading from jenkins.bin... Dump file created Thu Feb 14 11:43:45 CST 2019 Snapshot read, resolving... Resolving 12022774 objects... Chasing references, expect 2404 dots Eliminating duplicate references Snapshot resolved. Started HTTP server on port 7000 Server is ready.
瀏覽器訪問http://ip:7000 查看分析結果
功能: 生成虛擬機當前時刻的線程快照,用來定位線程出現長時間停頓的緣由,如線程見死鎖、死循環、請求外部資源致使的長時間等待等
jstack -l 13154
調優須要的技能: