Java虛擬機(jī)-參數(shù)配置(bjsxt)

虛擬機(jī)分為:系統(tǒng)虛擬機(jī)(比如VMware)、程序虛擬機(jī)(比如Java虛擬機(jī))

1、堆、棧、方法區(qū)

圖中創(chuàng)建user對(duì)象,就是根據(jù)方法區(qū)中的User類信息來創(chuàng)建的。

1)當(dāng)user是成員字段。那么每一個(gè)線程進(jìn)來時(shí),都會(huì)操作同一個(gè)堆中的實(shí)例,所以成員字段對(duì)應(yīng)的實(shí)例是線程共享的。(操作的是同一個(gè)變量引用,引用指向的實(shí)例也是同一個(gè))

2)當(dāng)user是局部變量。那么每一個(gè)線程進(jìn)來時(shí),都會(huì)各自在堆中創(chuàng)建一個(gè)實(shí)例,該實(shí)例由該線程私有,所以局部變量對(duì)應(yīng)的堆中實(shí)例是線程私有的。(操作的是各自的引用,引用指向的也是各自的實(shí)例)

問題:如果一個(gè)成員字段,在方法中使用時(shí),重新賦值了,而不是直接使用。那么該引用或引用指向的堆中實(shí)例是線程安全的嗎?不是。

總結(jié):

多線程環(huán)境下,成員字段的引用只有一個(gè),指向的堆中實(shí)例也只有一個(gè)(不管方法中是否重新賦值)。(所以成員字段線程共享)

局部變量,每個(gè)線程都有自己的引用,指向堆中各自的實(shí)例。(所以局部變量線程安全)

二、辨清java堆

三、Java棧

四、Java方法區(qū)

五、虛擬機(jī)參數(shù)

jvm參數(shù)配置:

(1)-XX 對(duì)于系統(tǒng)級(jí)別的配置(jvm),如配置日志信息,或者配置使用哪種垃圾回收器

(2)非-XX? 基本上都是應(yīng)用層面上的配置。如配置堆、棧、方法區(qū)的內(nèi)存大小(每一個(gè)Java程序都可以分別配置自己要使用的堆棧方法區(qū)的大?。恳粋€(gè)jvm上可以運(yùn)行多個(gè)Java程序)

+ 啟用

- 禁用


main方法運(yùn)行時(shí),run configuration, 添加jvm參數(shù): 設(shè)置當(dāng)前程序的堆內(nèi)存大小,和打印jvm信息

-Xms5m -Xmx20m -XX:+PrintGCDetails -XX:+UseSerialGC -XX:+PrintCommandLineFlags

更細(xì)粒度的堆內(nèi)存設(shè)置

堆溢出時(shí),導(dǎo)出整個(gè)堆的信息

測試打印堆溢出信息,jvm參數(shù):

-Xms2m -Xmx2m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=d:/Test03.dump

java棧配置

可以在try catch捕獲異常時(shí),打印調(diào)用次數(shù)。catch(throwable t)Exception的父類

方法區(qū)配置(以前以為方法區(qū)屬于堆的一部分,這么看不是)

直接內(nèi)存配置

oom內(nèi)存溢出(如果自己寫原生的NIO程序時(shí),可以試試配置,netty框架不用)

jvm不錯(cuò)的博客:

http:www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第6章類文件結(jié)構(gòu) 6.1 概述 6.2 無關(guān)性基石 6.3 Class類文件的結(jié)構(gòu) java虛擬機(jī)不和包括java...
    kennethan閱讀 1,070評(píng)論 0 2
  • 第二部分 自動(dòng)內(nèi)存管理機(jī)制 第二章 java內(nèi)存異常與內(nèi)存溢出異常 運(yùn)行數(shù)據(jù)區(qū)域 程序計(jì)數(shù)器:當(dāng)前線程所執(zhí)行的字節(jié)...
    小明oh閱讀 1,284評(píng)論 0 2
  • JAVA虛擬機(jī)的生命周期 一個(gè)運(yùn)行時(shí)的Java虛擬機(jī)實(shí)例的天職是:負(fù)責(zé)運(yùn)行一個(gè)java程序。當(dāng)啟動(dòng)一個(gè)Java程序...
    Solang閱讀 1,227評(píng)論 0 19
  • 一、運(yùn)行時(shí)數(shù)據(jù)區(qū)域 Java虛擬機(jī)管理的內(nèi)存包括幾個(gè)運(yùn)行時(shí)數(shù)據(jù)內(nèi)存:方法區(qū)、虛擬機(jī)棧、本地方法棧、堆、程序計(jì)數(shù)器,...
    luhanlin閱讀 611評(píng)論 0 0
  • 一、運(yùn)行時(shí)數(shù)據(jù)區(qū)域 Java虛擬機(jī)管理的內(nèi)存包括幾個(gè)運(yùn)行時(shí)數(shù)據(jù)內(nèi)存:方法區(qū)、虛擬機(jī)棧、本地方法棧、堆、程序計(jì)數(shù)器,...
    加油小杜閱讀 1,588評(píng)論 1 15

友情鏈接更多精彩內(nèi)容