イディックスメモリーがいっぱい

問題(このソースについて)  
  現在のインデックスでは、130kbyteを超えたテキストを
 扱うとメモリーが足りないとエラーが起こる。
  そこで、ある一定以上メモリーを消費した場合には、ストレージ
 に一端データーを格納してあげることにする。

  メモリーの監視方法とJAVAのVectorとLinkedListとarrayListと
 そしてガベージコレクションについて、少し調べなくては成らない
 だろう。


(keyword : HORB JAVA チャット)  

目次

 ○現在の設計
 ○問題転
 ○メモリーの監視方法
  ○ガベージコレクターについて




現在の設計
 
 
 上は あし,あしあと、いちご、いちじく を
 保存した場合のデータの中身です。
 
 n-Gramで単語を作成すると
 あ あし あしあ あしあと い いち いちご いちじ いちじく 
 を単語として認識します()
 
 これらは IndexとIndexDataで実現しています。
 単純にIndexDataないにVectorを保持もたせておき
 IndexDataがIndexDataを保持できるように作られています。

 
問題点

 テキストを(1から10)−Gramで単語つくります。
 テキストが120kbyte程度のものでも重くてメモリーに
 乗り切らなくなります。
 
 あとあとガベージコレクションについても少々
 
 
 解決策として、ある一定以上メモリーを占有するように
 なったら、ストレージ上に対比して上げる。
 
 または、IndexDataが一定以上になったらストレージ上に
 保存してあげる
 
 
メモリーの監視方法

パッケージ java.lang.management 
を用いよう!!

 import java.lang.management.*;
 import java.util.*;
 
  public class MemMane
  {
   public static void main(String ags[])
    { 
      List<MemoryPoolMXBean> lis = ManagementFactory.getMemoryPoolMXBeans();
      for(int i=0; i< lis.size();i++)
        {
          System.out.println(
          lis.get(i).getName()
            );
        }
     }
  }
 
 を実行すると
 
  Code Cache
  Eden Space
  Survivor Space
  Tenured Gen
  Perm Gen
  Perm Gen [shared-ro]
  Perm Gen [shared-rw]
  
と文字列を返します。    さてその意味は パフォーマンスチューニング Tuning Garbage Collection with the 5.0 Java[tm] Virtual Machine を読もう
Vector 対 LinkedList


LinkedListは遅い。とても遅い。
ということで、考察します。

LinkedListもVectorも動的な配列です。 
動的な配列は静的な配列とはことなり

int dat[120]の120のように
配列の大きさを指定した場合、
静的な配列だと120以上のint
型のデータを保存することは出来
ませんが、
動的な配列は120以上の値を保存すること
出来ます。
大きさによらずに列データを扱うことが出来るのです。


リストはどのような構造をしているのか?


Vectorの構造はどのようになっているか?



テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル