posts - 241,  comments - 116,  trackbacks - 0

          在做網絡監控系統 的性能 測試 時,出現了內存 泄露的問題,困擾了很久,現在終于算是解決了,但是根本原因尚不明確,拿出來大家討論下,看看能不能完美解決~

          這個問題奇怪的地方在于是Java 進程內存泄露,而不是平常的JVM內存泄露,用Jprofile等工具 也無法看出問題所在。

          測試代碼 如下:

           1  System.loadLibrary( " test1 " );
           2  
           3           int  threadPoolSize  =   400 ;
           4          ExecutorService service  =  Executors.newFixedThreadPool(threadPoolSize);
           5  
           6           for  ( int  i  =   0 ; i  <   400 ; i ++ ) {
           7              service.submit( new  Runnable() {
           8                   public   void  run() {
           9                       while  ( true ) {
          10                           try  {
          11                              Thread t  =   new  Thread();
          12                              t.start();
          13                              Thread.sleep( 100 );
          14                          }  catch  (Exception e) {
          15                              e.printStackTrace();
          16                          }
          17                      }
          18                  }
          19              });
          20          }

           

          說明:此段代碼所做的工作就是加載一個dll,然后不斷的啟動線程(線程什么也不做,直接終止)。
          注:線程池只是為了加速問題復現,無其他用處。

          現象:
          1.如果不加載dll,只不斷的啟動線程,Java進程內存正常,不會一直增長。
          2.如果加載附件中test1的dll,Java進程內存會一直增長。集裝箱運費
          3.如果加載附件中test2的dll(需要安裝C++運行環境vcredist_x86),Java進程內存正常,不會一直增長。

          dll說明:
          dll的工程源碼在附件中,test1和test2的區別只在于編譯選項,如附件:test1選擇的是“使用標準Windows 庫”或“在靜態庫中使用MFC”,test2選擇的是“在共享DLL中使用MFC”
          此dll工程的特點在于使用了jni,并引入了mfc頭文件 【#include <afxwin.h>】,如果不引入mfc頭文件則不會引起內存泄漏WiiU中文站

          目前此問題的根本原因尚不明確,懷疑是jdk的bug (使用最新的jdk1.6.0.23也沒用),不知道大家有什么想法嗎?歡迎大家討論~

          /Files/cyj86/dll工程.rar
          /Files/cyj86/test1.rar
          /Files/cyj86/test2.rar
          /Files/cyj86/vcredist_x86.rar
          /Files/cyj86/opt.png


          posted on 2011-06-16 09:55 墻頭草 閱讀(759) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          人人游戲網 軟件開發網 貨運專家
          主站蜘蛛池模板: 田林县| 洛隆县| 武隆县| 上高县| 南岸区| 彭山县| 十堰市| 忻州市| 巍山| 剑川县| 彭泽县| 阜新| 潢川县| 玉田县| 贡嘎县| 塔河县| 温宿县| 长岭县| 岫岩| 乌兰浩特市| 蓬安县| 黔南| 阿荣旗| 靖江市| 台前县| 琼海市| 和静县| 屏东县| 航空| 镇安县| 白水县| 美姑县| 周宁县| 浮梁县| 金坛市| 昔阳县| 收藏| 蒲江县| 西乌珠穆沁旗| 祁阳县| 遂川县|