1

selectステートメントでheap.heapForEachClassを使用する方法の例を誰かが示すことができますか? クエリのさまざまな例を含むリンクをいくつか提供していただければ幸いです(もちろん、oqlhelpページのもの以外です:))

4

2 に答える 2

2

heap.forEachClass() が、少なくとも直接ではなく、選択ステートメントで使用されることを意図しているとは思いません。何も返さないという事実を考慮してください。

var result=heap.forEachClass(function(it){return it;});
typeof result
//returns undefined

jhat と VisualVM で使用される OQL は、上記で使用した「クエリ」と同様に、単純な古い JavaScript をサポートしています。heap.forEachClass() は、JavaScript スタイルのクエリ、または選択型クエリ内の JavaScript 関数のいずれかでより多くの用途があると思います。

そうは言っても、heap.classes() 列挙は、選択スタイルのクエリとプレーンな JavaScript クエリの両方で、はるかに使いやすいため、この関数が存在する理由はわかりません。

次の JavaScript 関数を使用して、heap.forEachClass() と同じ機能を再作成することもできます。

function heapForEachClass(func){
    map(heap.classes(),func)
    return undefined;
}

私が提供できるサンプル クエリは、おそらく heap.classes() を使用して簡単に記述できます。たとえば、 heap.forEachClass() を使用してすべてのクラスのリストを取得できます。

var list=[];
heap.forEachClass(function(it){
    list.push(it);
});
list

しかし、これは heap.classes() で行う方法よりも複雑です:

select heap.classes()

あるいは単に

heap.classes()
于 2012-02-02T18:36:13.003 に答える