10

私が開発したいくつかの JMX 監視スクリプトをテストする必要があります。特に、PermGen 領域の監視が機能していることを確認したいと思います。したがって、これをテストするために、PermGen を使用するためにかなりの数のクラスをロードするコードを少し実行できるようにしたいと考えています。

prefix(1..n).java私の現在の計画は、それらを生成してコンパイルし、キューで実行するスクリプトを作成することです。

for( int i=1 ; i < n ; i ++){
    Class.forName("com.mypackage.prefix"+i);
}

これを達成するためのよりエレガントなソリューションはありますか?

4

1 に答える 1

10

わかりました。 String.intern() がうまくいくようです。これが私が見つけた1つの実装です。クレジットはGarethにも送られます:

public static void main(String[] args) throws ClassNotFoundException {
    int i = 0;
    StringBuilder sb = new StringBuilder("a");
    for (i = 0; i < 20; i++) {
        sb.append(sb.toString());
    }
    System.err.println(sb.length());
    i = 0;
    Set<String> strings = new HashSet<String>();
    while (true) {
        strings.add(sb.append(i++).toString().intern());
        System.err.println(i);
    }
}
于 2012-03-21T10:51:05.127 に答える