<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JVM知識點題目

    JVM是Java程序的運行環境,因此對于JVM的掌握有助于理解Java程序的執行以及編寫,尤其是運行時碰到的一些詭異問題,那么怎么樣能考察自己對于JVM關鍵知識點的掌握情況,幫助學習JVM機制呢,在這篇blog中來探討下。

    對于Java程序而言,JVM的關鍵機制有:字節碼的加載、方法的執行、對象內存的分配和回收、線程和鎖機制,這幾個機制涉及到的jvm的知識點遠沒有寫這幾個字這么簡單,里面的復雜度還是非常高的。

    字節碼的加載
    JVM通過ClassLoader來完成字節碼的動態加載,這里面涉及到的主要是ClassLoader的雙親委派、ClassLoader的編寫方法、Class是否被加載的唯一標識以及Class的加載過程。
    在考察的時候我覺得可以以這么兩道簡單的題來考察:
    1、寫一段將目錄中指定的.class文件加載到JVM的程序,并通過Class對象獲取到完整類名等信息;
    2、一段展示代碼,里面包含一個全局靜態整型變量,問如果用兩個ClassLoader加載此對象,執行這個整型變量++操作后結果會是怎么樣的?

    方法的執行
    JVM有自己的一套指令系統,字節碼中即已經是指令了,需要大概掌握了JVM對static、interface、instance、構造器采用的不同的執行方法,另外就是JVM中反射的實現(可以以Sun JDK來舉例)、動態代理的實現,最后相關的就是JVM執行字節碼的方式(解釋、JIT、Hotspot),以及什么時候觸發編譯成機器碼,如何控制。
    在考察的時候我覺得可以以這么三道題來考察:
    1、A a=new A();a.execute();和IA a=new A();a.execute();執行有什么不同;
    2、反射的性能低的原因是?
    3、編寫一段程序,動態的創建一個接口的實現,并加載到JVM中執行;(可以允許用BCEL等工具)

    對象內存的分配和回收
    這塊涉及的知識點也是比較的多,例如JVM內存區域的劃分、自然類型和引用類型的內存分配的不同、TLAB、GC的算法、Sun JDK對于GC的實現、GC觸發的時機、GC的跟蹤和分析的方法。
    在考察的時候我覺得可以以這么三道題來考察:
    1、經典的String比較程序題:
       String a="a";
       String b="b";
       String ab="ab";
       (a+b)==ab;  ??  (引深題,如何才能讓(a+b)==ab)
       ("a"+"b")==ab; ?? 
    2、寫一段程序,讓其OutOfMemory,或頻繁執行Minor GC,但又不觸發Full GC,又或頻繁執行Full GC,但不執行minor GC,而且不OutOfMemory,甚至可以是控制幾次Minor GC后發生一次Full GC;
    3、詳細講解GC的實現,例如minor GC的時候導致是怎么回收對象內存的,Full GC的時候是怎么回收對象內存的。

    線程和鎖機制
    這塊涉及的知識點仍然是非常的多,例如線程中變量的操作機制、線程調度機制、線程的狀態以及控制方法、線程的跟蹤和分析方法、同步關鍵字、lock/unlock的原理等。
    在考察的時候我覺得可以以這么幾道題考察下:
    1、i++的執行過程;
    2、一個線程需要等待另外一個線程將某變量置為true才繼續執行,如何編寫這段程序,或者如何控制多個線程共同啟動等;
    3、控制線程狀態的轉換的方法,或者給幾個thread dump,分析下哪個線程有問題,問題出在哪;
    4、static屬性加鎖、全局變量屬性加鎖、方法加鎖的不同點?

    posted on 2009-03-27 14:30 BlueDavy 閱讀(9521) 評論(9)  編輯  收藏 所屬分類: Java

    評論

    # re: JVM知識點題目 2009-03-27 15:28 flyisland

    希望不是你當面試官,哈  回復  更多評論   

    # re: JVM知識點題目 2009-03-27 16:05 云襄

    JVM的東西的確比較復雜  回復  更多評論   

    # re: JVM知識點題目 2009-03-27 19:27 問問

    都不是很懂,什么時候貼答案啊?  回復  更多評論   

    # re: JVM知識點題目[未登錄] 2009-03-27 20:15 逝水fox

    看了問題 很想知道答案 看書去咯  回復  更多評論   

    # re: JVM知識點題目[未登錄] 2009-03-28 15:55 kimi

    關于ClassLoader的兩個問題
    第一個題目把文件系統中的.class文件讀到一個bute數組中,使用ClassLoader的defineClass方法把這個byte數組傳遞給jvm,則返回一個Class對象,通過這個Class對象可以做關于一個對象的任何事情,但defineClass方法是protected的,所以要寫一個ClassLoader的子類,也就是實現一個自己的ClassLoader。

    第二個題目由于Java中ClassLoader本質上是定義了一個Class的集合,而且ClassLoader之間是項目隔離的,除非它們之間是父子關系,但即使這樣,只能是子ClassLoader能看到父ClassLoader定義的Class,父ClassLoader看不到子ClassLoader定義的Class,所以使用一個ClassLoader加載的類的靜態變量執行++操作,對另一個ClassLoader加載的對象的靜態變量是沒有影響的。

    班門弄斧了,還請博主指正我的回答是否正確。  回復  更多評論   

    # re: JVM知識點題目 2009-05-24 01:51 ttt

    老大,給個答案啊,別變成炫耀貼了。  回復  更多評論   

    # re: JVM知識點題目 2011-12-31 14:33 whwang

    這題太狠了:
    3、編寫一段程序,動態的創建一個接口的實現,并加載到JVM中執行;(可以允許用BCEL等工具)
      回復  更多評論   

    # re: JVM知識點題目 2012-01-02 00:23 斌斌

    將目錄里的*.class filter出來,getName一個個來  回復  更多評論   

    # re: JVM知識點題目 2012-08-10 17:04 jb

    1.1 findclass
    1.2 不同classloader加載的class是不同的class,其實包名與文件名都相同

    2.3用asm 框架 writeclass  回復  更多評論   

    公告

     









    feedsky
    抓蝦
    google reader
    鮮果

    導航

    <2009年3月>
    22232425262728
    1234567
    891011121314
    15161718192021
    22232425262728
    2930311234

    統計

    隨筆分類

    隨筆檔案

    文章檔案

    Blogger's

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 国产亚洲情侣一区二区无| 成年轻人网站色免费看| 亚洲人成人网站色www| 一区二区三区免费视频观看| 激情综合亚洲色婷婷五月| 免费视频成人片在线观看| 亚洲国产婷婷六月丁香| 亚洲AV无码乱码在线观看代蜜桃 | 亚洲人和日本人jizz| 性色午夜视频免费男人的天堂| 久久青草亚洲AV无码麻豆| 91香蕉在线观看免费高清| 免费一级黄色毛片| 特黄特色的大片观看免费视频| 亚洲男人av香蕉爽爽爽爽| 中文字幕无线码免费人妻| 狠狠色伊人亚洲综合成人| a级特黄毛片免费观看| 亚洲av无码国产精品色午夜字幕| 99久久精品国产免费| 亚洲av成人综合网| 免费黄色app网站| 边摸边吃奶边做爽免费视频99| 亚洲精品综合久久| 国产精品白浆在线观看免费| 亚洲日韩国产精品无码av| 德国女人一级毛片免费| 无码 免费 国产在线观看91| 亚洲色精品88色婷婷七月丁香| 久久ww精品w免费人成| 亚洲国产av玩弄放荡人妇| 亚洲色偷偷狠狠综合网| 老汉精品免费AV在线播放| 亚洲欧洲日韩极速播放| 亚洲精品高清一二区久久| 18禁在线无遮挡免费观看网站| 亚洲伊人久久大香线焦| www.亚洲色图.com| 国产午夜亚洲精品不卡电影| 中文字幕亚洲图片| jizz在线免费观看|