學(xué)習(xí)啦 > 實(shí)用范文 > 個(gè)人寫作 > 自我評(píng)價(jià) > 簡(jiǎn)歷自我評(píng)價(jià) > java工程師個(gè)人簡(jiǎn)歷自我評(píng)價(jià)_JAVA軟件工程師面試簡(jiǎn)歷的自我評(píng)價(jià)(3)

java工程師個(gè)人簡(jiǎn)歷自我評(píng)價(jià)_JAVA軟件工程師面試簡(jiǎn)歷的自我評(píng)價(jià)(3)

時(shí)間: 晶戌838 分享

java工程師個(gè)人簡(jiǎn)歷自我評(píng)價(jià)_JAVA軟件工程師面試簡(jiǎn)歷的自我評(píng)價(jià)

  更多熱門的Java工程師面 試簡(jiǎn)歷、筆題、薪資待

  ☟歡迎賞析

  jjava工程師個(gè)人簡(jiǎn)歷自我評(píng)價(jià)△熟練使用mvc框哦架搭建項(xiàng)

  jjava工程師個(gè)人面試簡(jiǎn)歷△了解Linux

  jJava工程師面題及答案△GET POST區(qū)

  jjava工程師待遇前景△Java軟件工程師月薪范圍

  jjava工程師招聘榜△Javaweb開(kāi)發(fā)工程師

  Java工程師面試題及答案

  一、String,StringBuffer, StringBuilder 的區(qū)別是什么?String為什么是不可變的?

  1. String是字符串常量,StringBuffer和StringBuilder是字符串變量。StringBuffer是線程安全的,StringBuilder是非線程安全的。具體來(lái)說(shuō)String是一個(gè)不可變的對(duì)象,每次修改String對(duì)象實(shí)際上是創(chuàng)新新對(duì)象,并將引用指向新對(duì)象。效率很低。StringBuffer

  是可變的,即每次修改只是針對(duì)其本身,大部分情況下比String效率高,StringBuffer保證同步(synchronized),所以線程安全。StringBuilder沒(méi)有實(shí)現(xiàn)同步,所以非線程安全。但效率應(yīng)該比StringBuffer高。StringBuffer使用時(shí)最好指定容量,這樣會(huì)比不指定容量快30%-40%,甚至比不指定容量的StringBuilder還快。

  二、VECTOR,ARRAYLIST, LINKEDLIST的區(qū)別是什么?

  vector是同步的,arraylist和linkedlist不是同步的。底層方面,vector與arraylist都是基于object[]array實(shí)現(xiàn)的,但考慮vector線程安全,所以arraylist效率上回比vector較快。元素隨機(jī)訪問(wèn)上,vector與arraylist是基本相同的,時(shí)間復(fù)雜度是O(1),linkedlist的隨機(jī)訪問(wèn)元素的復(fù)雜度為O(n)。但在插入刪除數(shù)據(jù)上,linkedlist則比arraylist要快很多。linkedlist比arraylist更占內(nèi)存,因?yàn)閘inkedlist每個(gè)節(jié)點(diǎn)上還要存儲(chǔ)對(duì)前后兩個(gè)節(jié)點(diǎn)的引用。

  三、HASHTABLE, HASHMAP,TreeMap區(qū)別

  Hashmap和HashTable都實(shí)現(xiàn)了Map接口,但HashTable是線程安全的,HashMap是非線程安全的。HashMap中允許key-value值均為null,但HashTable則不允許。HashMap適合單線程,HashTable適合多線程。HashTAble中的hash數(shù)字默認(rèn)大小是11,增加方式為old*2+1,HashMap中的hash默認(rèn)大小為16,且均為2的指數(shù)。TreeMap則可以將保持的數(shù)據(jù)根據(jù)key值進(jìn)行排列,可以按照指定的排序方式。默認(rèn)為升序。

  四、ConcurrentHashMap和HashTable的區(qū)別

  兩者均應(yīng)用于多線程中,但當(dāng)HashTable增大到一定程度時(shí),其性能會(huì)急劇下降。因?yàn)榈鷷r(shí)會(huì)被鎖很長(zhǎng)時(shí)間。但ConcurrentHashMap則通過(guò)引入分割來(lái)保證鎖的個(gè)數(shù)不會(huì)很大。簡(jiǎn)而言之就是HashTable會(huì)鎖住真?zhèn)€map,而ConcurrentHashMap則只需要鎖住map的一個(gè)部分。

  五、Tomcat,apache,jboss的區(qū)別

  Tomcat是servlet容器,用于解析jsp,servlet。是一個(gè)輕量級(jí)的高效的容器;缺點(diǎn)是不支持EJB,只能用于Java應(yīng)用。

  Apache是http服務(wù)器(web服務(wù)器),類似于IIS可以用來(lái)建立虛擬站點(diǎn),編譯處理靜態(tài)頁(yè)面。支持SSL技術(shù),支持多個(gè)虛擬主機(jī)等功能。

  Jboss是應(yīng)用服務(wù)器,運(yùn)行EJB的javaee應(yīng)用服務(wù)器,遵循javaee規(guī)范,能夠提供更多平臺(tái)的支持和更多集成功能,如數(shù)據(jù)庫(kù)連接,JCA等。其對(duì)servlet的支持是通過(guò)集成其他servlet容器來(lái)實(shí)現(xiàn)的。如tomcat。

  六、GET POST區(qū)別

  get是從服務(wù)器上獲取數(shù)據(jù),post是向服務(wù)器發(fā)送數(shù)據(jù)。

  get是把參數(shù)數(shù)據(jù)隊(duì)列加到提交表單的action屬性所指的URL中,值和表單內(nèi)各個(gè)字段一一對(duì)應(yīng),在url中可以看到。post是通過(guò)HTTPpost機(jī)制,將表單內(nèi)各個(gè)字段與其內(nèi)容放置在html header內(nèi)一起傳送到action屬性所指的url地址。

  對(duì)于get方式,服務(wù)區(qū)端用request.QueryString獲取變量值,對(duì)于post方式,服務(wù)器端用request.Form獲取提交的數(shù)據(jù)。get傳送的數(shù)據(jù)量較小,post較大,一般不受限制。get安全性比post要低,但執(zhí)行效率較高。

  七、SESSION, COOKIE區(qū)別

  session數(shù)據(jù)放在服務(wù)器上,cookie則放在客戶瀏覽器上。cookie不太安全,因?yàn)榭梢苑治龀霰镜豤ookie,并進(jìn)行cookie欺騙,考慮安全應(yīng)使用session。session會(huì)在一定時(shí)間內(nèi)保存在服務(wù)器上,當(dāng)訪問(wèn)增多時(shí),會(huì)比較占用服務(wù)器的性能,考慮減輕服務(wù)器壓力則應(yīng)該使用cookie。單個(gè)cookie保持的數(shù)據(jù)不超過(guò)4k,很多瀏覽器都限制要給站點(diǎn)最多保存20個(gè)cookie。

  八、Servlet的生命周期

  主要分三個(gè)階段:初始化——調(diào)用init()方法,響應(yīng)客戶請(qǐng)求階段——調(diào)用service()方法,終止階段——調(diào)用destroy方法。工作原理:客戶發(fā)送一個(gè)請(qǐng)求,servlet調(diào)用service方法對(duì)請(qǐng)求進(jìn)行響應(yīng),即對(duì)請(qǐng)求方式進(jìn)行匹配,選擇調(diào)用doGet、doPost方法等,然后進(jìn)入對(duì)于的方法中調(diào)用邏輯層的方法,實(shí)現(xiàn)對(duì)客戶的響應(yīng)。自定義的servlet必須首先servlet接口。

  具體生命周期包括:裝載Servlet、服務(wù)器創(chuàng)建Servlet實(shí)例、服務(wù)器調(diào)用Servlet的init()方法、客戶請(qǐng)求到達(dá)服務(wù)器、服務(wù)器創(chuàng)建請(qǐng)求對(duì)象、服務(wù)創(chuàng)建相應(yīng)對(duì)象、服務(wù)器激活Servlet的service方法,請(qǐng)求對(duì)象和響應(yīng)對(duì)象作為service()方法的參數(shù)、service()方法獲得關(guān)于請(qǐng)求對(duì)象的信息,處理請(qǐng)求,訪問(wèn)其他資源,獲得需要的信息、service()方法可能激活其他方法以處理請(qǐng)求,如doGet(),doPost()

  九、HTTP 報(bào)文包含內(nèi)容

  請(qǐng)求方法包括GET,POST,HEAD,PUT,TRACE,OPTIONS,DELETE。請(qǐng)求頭如:Host、User-Agent、Connection、Accept-Charset等。請(qǐng)求頭部的最后會(huì)有一個(gè)空行,表示請(qǐng)求頭部結(jié)束,接下來(lái)為請(qǐng)求正文,這一行非常重要,必不可少。請(qǐng)求正文為可選部分,如get就沒(méi)有。

  十、Statement與PreparedStatement的區(qū)別,什么是SQL注入,如何防止SQL注入

  使用PreparedStatement可以提升代碼的可讀性和可維護(hù)性,可以盡最大可能提高性能。因?yàn)镾tatement每次執(zhí)行一個(gè)SQL命令都會(huì)對(duì)其編譯,但PreparedStatement則只編譯一次。PreparedStatement就類似于流水線生產(chǎn)。另一方面PreparedStatement可以極大提高安全性:它對(duì)傳遞過(guò)來(lái)的參數(shù)進(jìn)行了強(qiáng)制參數(shù)類型轉(zhuǎn)換,確保插入或查詢數(shù)據(jù)時(shí),與底層數(shù)據(jù)庫(kù)格式匹配。

  SQL注入:就是通過(guò)將sql命令插入到web表單遞交或輸入域名或頁(yè)面請(qǐng)求的查詢字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意SQL命令。如sql命令:select id from test where name='1' or 1=1; drop table test,但用PreparedStatement就可以避免這種問(wèn)題。

  十一、redirect, forward區(qū)別

  redirect:服務(wù)器根據(jù)邏輯,發(fā)送一個(gè)狀態(tài)碼,告訴瀏覽器重新去請(qǐng)求那個(gè)地址。所以地址欄顯示是新的url。forward是指服務(wù)器請(qǐng)求資源,直接訪問(wèn)目標(biāo)地址url,把響應(yīng)的內(nèi)容讀取過(guò)來(lái)并再發(fā)送給瀏覽器,瀏覽器并不知道資源從哪里來(lái),所以地址欄不變。

  redirect不能共享數(shù)據(jù),forward轉(zhuǎn)發(fā)頁(yè)面和轉(zhuǎn)發(fā)到頁(yè)面可以貢獻(xiàn)request中的數(shù)據(jù)。redirect用于注銷,forward用于登陸。forward效率高于redirect。

  十二、關(guān)于JAVA內(nèi)存模型,一個(gè)對(duì)象(兩個(gè)屬性,四個(gè)方法)實(shí)例化100次,現(xiàn)在內(nèi)存中的存儲(chǔ)狀態(tài),幾個(gè)對(duì)象,幾個(gè)屬性,幾個(gè)方法。

  Java新建的對(duì)象都放在堆里,如果實(shí)例化100次,堆中產(chǎn)生100個(gè)對(duì)象,一般對(duì)象與其屬性和方法屬于一個(gè)整體,但如果屬性和方法是靜態(tài)的,則屬性和方法只在內(nèi)存中存一份。

  十三、談?wù)凥ibernate的理解,一級(jí)和二級(jí)緩存的作用,在項(xiàng)目中Hibernate都是怎么使用緩存的

  一級(jí)緩存為session基本的緩存,是內(nèi)置的不能卸載。一個(gè)Session做了一個(gè)查詢操作,它會(huì)把這個(gè)結(jié)果放在一級(jí)緩存中,如果短時(shí)間內(nèi)這個(gè)session又做了同一個(gè)操作,那么hibernate就直接從一級(jí)緩存中獲取數(shù)據(jù)。

  二級(jí)緩存是SessionFactory的緩存,分為內(nèi)置緩存和外置緩存兩類。即查詢結(jié)果放在二級(jí)緩存中,如果同一個(gè)sessionFactory創(chuàng)建的某個(gè)session執(zhí)行了相同的操作,hibernate就會(huì)從二級(jí)緩存中獲取結(jié)果。適合放在二級(jí)緩存中的數(shù)據(jù)包括:很少被修改的數(shù)據(jù),不是很重要的數(shù)據(jù),允許出現(xiàn)偶偶并發(fā)的數(shù)據(jù),不會(huì)被并發(fā)訪問(wèn)的數(shù)據(jù),參考數(shù)據(jù)。不適合放在二級(jí)緩存中的數(shù)據(jù):經(jīng)常被修改的數(shù)據(jù),財(cái)務(wù)數(shù)據(jù),絕對(duì)不允許出現(xiàn)并發(fā),與其他應(yīng)用共享的數(shù)據(jù)。

  十四、反射講一講,主要是概念,都在哪需要反射機(jī)制,反射的性能,如何優(yōu)化

  能夠分析類能力的程序稱為反射。反射機(jī)制可以用來(lái):在運(yùn)行中分析類的能力,在運(yùn)行中查看對(duì)象,如編寫一個(gè)toString方法供所有類使用。實(shí)現(xiàn)通用的數(shù)據(jù)操作代碼。利用Method對(duì)象,這個(gè)對(duì)象很像C++的指針。

  反射性能優(yōu)化方法主要為設(shè)置不用做安全檢查。

  十五、談?wù)凥ibernate與Ibatis的區(qū)別,哪個(gè)性能會(huì)更高一些

  Ibatis相當(dāng)較為簡(jiǎn)單,容易上手,Hibernate比較復(fù)雜,門檻較高。如果系統(tǒng)需要處理數(shù)據(jù)量很大,性能要求很高,需要執(zhí)行高度優(yōu)化的sql語(yǔ)句才能達(dá)到性能要求,則此時(shí)Ibatis會(huì)比較好。

  對(duì)不同數(shù)據(jù)庫(kù)支持方面Hibernate較好,因?yàn)镮batis需要修改的字段較多。另外Hibernate現(xiàn)已成為主流的o/r Mapping框架,開(kāi)發(fā)效率高。

  十六、對(duì)Spring的理解,項(xiàng)目中都用什么?怎么用的?對(duì)IOC、和AOP的理解及實(shí)現(xiàn)原理

  十七、線程同步,并發(fā)操作怎么控制

  線程同步不一定就是同時(shí),而是協(xié)同步驟,或協(xié)同步調(diào)。線程同步就是多個(gè)線程在邏輯上互有因果關(guān)系,所以要對(duì)其執(zhí)行順序進(jìn)行協(xié)調(diào)。

  線程并發(fā)是指同一時(shí)間間隔內(nèi),多個(gè)線程同時(shí)執(zhí)行。如果線程在時(shí)間上能夠區(qū)分,那么就可以上線程休眠指定的時(shí)間來(lái)進(jìn)行同步,可用sleep()方法完成。如果線程在時(shí)間上不能區(qū)分,但在邏輯順序上可以區(qū)分的話,那么可用jion()方法來(lái)完成,一個(gè)先執(zhí)行完,然后執(zhí)行另一個(gè)。如果線程設(shè)計(jì)較為復(fù)雜,那么就只有通過(guò)wait(),notify()方法來(lái)完成了

  十八、描述struts的工作流程。

  簡(jiǎn)略過(guò)程就是web應(yīng)用啟動(dòng),接收用戶請(qǐng)求并進(jìn)行匹配,返回用戶請(qǐng)求信息。

  1. 在web應(yīng)用啟動(dòng)時(shí),加載并初始化ActionServlet,ActionServlet從struct-config.xml文件中讀取配置信息,把它們存放到各個(gè)配置對(duì)象中。

  2. 當(dāng)ActionServlet接收到一個(gè)客戶請(qǐng)求時(shí),首先檢索和用戶請(qǐng)求相配的ActionMapping實(shí)例,如果不存在,返回用戶請(qǐng)求路徑無(wú)效信息。

  3. 如ActionForm實(shí)例不存在,則創(chuàng)建一個(gè)ActionForm對(duì)象,把客戶提交的表單數(shù)據(jù)保存到ActionForm對(duì)象中。

  4. 根據(jù)配置信息決定是否需要表單驗(yàn)證。如果需要驗(yàn)證,就調(diào)用ActionForm的Validate()方法。如果Valiedate()方法返回null或返回一個(gè)不包含ActionMessage的ActionErrors對(duì)象,則表示表單驗(yàn)證成功。

  5. ActionServlet更加ActionMapping實(shí)例包含的映射信息決定請(qǐng)請(qǐng)求轉(zhuǎn)發(fā)給哪個(gè)Action。如果相應(yīng)的Action實(shí)例不存在,則先創(chuàng)建這個(gè)實(shí)例,然后調(diào)用Action的execute()方法。

  6. Action的execute()方法返回一個(gè)ActionForward對(duì)象,ActionServlet再把客戶請(qǐng)求轉(zhuǎn)發(fā)給ActionForward對(duì)象指向的JSP組建。

  7. ActionForward對(duì)象指向的jsp組件生成的動(dòng)態(tài)網(wǎng)頁(yè),返回給客戶。

  十九、Tomcat的session處理,如果讓你實(shí)現(xiàn)一個(gè)tomcatserver,如何實(shí)現(xiàn)session機(jī)制

  當(dāng)一個(gè)session開(kāi)始時(shí),Servlet容器會(huì)創(chuàng)建一個(gè)HttpSession對(duì)象,在某些情況下把這些HttpSession對(duì)象從內(nèi)存中轉(zhuǎn)移到文件系統(tǒng)中或數(shù)據(jù)庫(kù)中。需要訪問(wèn)的時(shí)候?qū)⑺鼈冚d入到內(nèi)存中。這樣的好處就是節(jié)省內(nèi)存,當(dāng)web服務(wù)器產(chǎn)生故障時(shí),還可以從文件系統(tǒng)或數(shù)據(jù)庫(kù)中恢復(fù)Session的數(shù)據(jù)。管理session有兩個(gè)類:1)StandardManager,這是一個(gè)默認(rèn)的類,當(dāng)tomcat啟動(dòng)或重載時(shí)將會(huì)session對(duì)象保存到指定文件中。2)PersistentManager,管理方式更加靈活,具有容錯(cuò)能力,可以及時(shí)把Session備份到Session Store中,可以控制內(nèi)存中Session的數(shù)量。

  二十、關(guān)于Cache(Ehcache,Memcached)

  Memcache:分布式內(nèi)存對(duì)象緩存系統(tǒng),占用其他機(jī)子的內(nèi)存。很多互聯(lián)網(wǎng),負(fù)載均衡三臺(tái)(以三臺(tái)為例)web服務(wù)器可以共享一臺(tái)Memcache的資源。傳遞的信息以鍵值對(duì)的形式存儲(chǔ)。傳遞的數(shù)據(jù)要實(shí)現(xiàn)序列化。

  Oscache:頁(yè)面級(jí)緩存(網(wǎng)上強(qiáng)調(diào)最多的東西),占用本機(jī)的內(nèi)存資源。可 以選擇緩存到硬盤,如存取到硬盤重啟服務(wù)也可重新獲得上次持久化的資源,而如果緩存到內(nèi)存就不行。一般沒(méi)必要緩存到硬盤,因?yàn)镮/O操作也是比較耗資源,和從數(shù)據(jù)庫(kù)取往往優(yōu)勢(shì)很小。Oscache存取數(shù)據(jù)的作用域分為application和session兩種。

  EhCache:Hibernate緩存,DAO緩存,安全性憑證緩存(Acegi),Web緩存,應(yīng)用持久化和分布式緩存。EhCache在默認(rèn)情況下,即在用戶未提供自身配置文件ehcache.xml或ehcache-failsafe.xml時(shí),EhCache會(huì)依據(jù)其自身Jar存檔包含的ehcache-failsafe.xml文件所定制的策略來(lái)管理緩存。如果用戶在classpath下提供了ehcache.xml或ehcache-failsafe.xml文件,那么EhCache將會(huì)應(yīng)用這個(gè)文件。如果兩個(gè)文件同時(shí)提供,那么EhCache會(huì)使用ehcache.xml文件的配置。

  二一、sql的優(yōu)化相關(guān)問(wèn)題

  1. 對(duì)查詢優(yōu)化,避免全表掃描

  2. 盡量避免where子句中對(duì)段進(jìn)行null值判斷,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。

  3. 盡量避免where子句中出現(xiàn)!=或<>,否則將導(dǎo)致引擎放棄使用索引而進(jìn)行全表掃描。

  4. 盡量避免where子句中出現(xiàn)or來(lái)連接條件。

  5. 慎用in和not in,否則導(dǎo)致全表掃描

  6. where中不要用函數(shù)操作。

  7. Update 語(yǔ)句,如果只更改1、2個(gè)字段,不要Update全部字段,否則頻繁調(diào)用會(huì)引起明顯的性能消耗,同時(shí)帶來(lái)大量日志。

  8. 對(duì)于多張大數(shù)據(jù)量(這里幾百條就算大了)的表JOIN,要先分頁(yè)再JOIN,否則邏輯讀會(huì)很高,性能很差。

  9. 盡可能的使用 varchar/nvarchar 代替 char/nchar,節(jié)省空間,提高查詢效率

  10. select count(*) from table;這樣不帶任何條件的count會(huì)引起全表掃描,并且沒(méi)有任何業(yè)務(wù)意義,是一定要杜絕的。

  二二、oracle中 rownum與rowid的理解,一千條記錄我查200到300的記錄怎么查?

  二三、如何分析ORACLE的執(zhí)行計(jì)劃?

  二四、 DB中索引原理,種類,使用索引的好處和問(wèn)題是什么?

  原理:因?yàn)闄z索磁盤比對(duì)數(shù)據(jù),需要大量的時(shí)間和IO,所以就需要構(gòu)造某列的數(shù)據(jù)的btree、hash值、位圖索引。一般的索引能快速的查找比對(duì),而索引的值記錄了磁盤的位置,直接讀取數(shù)據(jù)庫(kù)字段對(duì)應(yīng)位置的內(nèi)容。

  索引好處:加快數(shù)據(jù)檢索速度、加速表與表之間的連接特別是實(shí)現(xiàn)數(shù)據(jù)的參考完整性方面有特別的意義、減少查詢中分組和排序的時(shí)間,使用優(yōu)化隱藏器,提高系統(tǒng)性能。

  缺點(diǎn):創(chuàng)建和維護(hù)索引需要時(shí)間,索引需要占用物理空間,當(dāng)對(duì)表中的數(shù)據(jù)驚醒增刪改時(shí)所有也需要?jiǎng)討B(tài)維護(hù)。

  二五、JVM垃圾回收實(shí)現(xiàn)原理。垃圾回收的線程優(yōu)先級(jí)。

  JVM的堆空間中主要分為年輕代、年老代和永久代。年輕代和年老代是存儲(chǔ)動(dòng)態(tài)產(chǎn)生的對(duì)象。永久代主要是存儲(chǔ)java類信息,包括解析得到的方法屬性、字段等等。永久代基本不參與垃圾回收。年輕代分為一個(gè)eden區(qū)和兩個(gè)相同的survior區(qū)。剛開(kāi)始創(chuàng)建的對(duì)象都放置在eden區(qū)。這樣主要是為了將生命周期短的對(duì)象盡量留在年輕代中。當(dāng)eden區(qū)申請(qǐng)不到空間時(shí),進(jìn)行minorGC,把存活的對(duì)象拷貝到survior。年老代主要存放生命周期比較長(zhǎng)的對(duì)象,如緩存對(duì)象。具體JVM垃圾回收過(guò)程如下:

  1、對(duì)象在Eden區(qū)完成內(nèi)存分配。2、當(dāng)Eden區(qū)滿了,在創(chuàng)建對(duì)象就會(huì)申請(qǐng)不到空間,則觸發(fā)minorGC,進(jìn)行young(eden區(qū)和1survivor區(qū)的垃圾回收)。3、在minorGC時(shí),Eden不能被回收的對(duì)象唄放入到空的survior(即Eden肯定被清空),另一個(gè)survivor里不能被GC回收的地想也會(huì)被放入到這個(gè)survivor,始終保證一個(gè)survivor是空的。4、當(dāng)完成第三步的時(shí)候、如果發(fā)現(xiàn)survivor滿了,則這些對(duì)象唄copy到old區(qū),或者survivor并沒(méi)有滿,但有些對(duì)象已經(jīng)足夠old了,也被放入到old區(qū)。當(dāng)old區(qū)北放滿之后,進(jìn)行fullGC。

  二六、jvm 最大內(nèi)存設(shè)置。設(shè)置的原理。結(jié)合垃圾回收講講。

  JVM內(nèi)存可以分為堆內(nèi)存和非堆內(nèi)存,堆內(nèi)存給開(kāi)發(fā)人員用的,非堆內(nèi)存給JVM本身用的,用來(lái)存放類型信息,即使GC時(shí)也不會(huì)釋放空間。

  堆內(nèi)存設(shè)置:

  -Xms 初始堆內(nèi)存,默認(rèn)物理內(nèi)存1/64,也是最小分配堆內(nèi)存,當(dāng)空余堆內(nèi)存小于40%時(shí),會(huì)增加到-Xms的最大限制。

  -Xmx 最大堆內(nèi)存分配,默認(rèn)物理內(nèi)存1/4,當(dāng)空余堆內(nèi)存大于70%時(shí),會(huì)減小打-Xms的最小限制。

  非堆內(nèi)存設(shè)置:

  -XX:PermSize 非堆內(nèi)存的初始值,默認(rèn)物理內(nèi)存的1/64,也是最小非堆內(nèi)存。

  -XX:MaxPermSize 非堆內(nèi)存最大值,默認(rèn)物理內(nèi)存的1/4。

  查看堆大小命令為Runtime.getRuntime().maxMemory()。

  二七、jvm怎樣通過(guò)參數(shù)調(diào)整內(nèi)存大小

  本地環(huán)境變量中JVM參數(shù)設(shè)置:

  new一個(gè)JAVA_OPTS:

  variable name: JAVA_OPTS

  variable value: -Xms256M -Xmx512M -XX:PermSize=256M -XX:MaxPermSize=512M

  eclipse中參數(shù)設(shè)置:在缺省VM參數(shù)中輸入:-Xmx128m -Xms64m -Xmn32m -Xss16m

 >>>下一頁(yè)更多精彩“java工程師待遇前景”

1166933