ページ更新: 2004-12-10 (金) (5334日前)

関連: eclipse/SWT/情報源

グラフィクスのリソースリークを調べるために使うツール。

単体のコードと、eclipse plugin (S-leak ビューが使える) がある。

[編集]

Sleak #

Sleak

  • Sleak is a simple tool that monitors the creation and disposing of SWT graphics resources.

Sleak

[編集]

アプリケーションのメニューで呼び出せるようにしてみた (2004-12-10) #

試しに、Sleak (ViewCVS) をアプリケーションから呼び出せるようにしてみた。

[編集]

1. SleakAdapterを作成 #

アプリケーションから呼び出すために、Sleakと同じパッケージにSleakAdapterクラスを作成。

package org.eclipse.swt.tools.internal;

public class SleakAdapter {
    Sleak sleak;
    public SleakAdapter(Sleak sleak) {
        this.sleak = sleak;
    }
    public Sleak getSleak() {
        return sleak;
    }
    public void open() {
        sleak.open();
    }
    public void setActive() {
        sleak.shell.setActive();
    }
    public boolean isVisible() {
        return (sleak.shell != null) && sleak.shell.isVisible();
    }
    public boolean isDisposed() {
        return (sleak.shell == null) || sleak.shell.isDisposed();
    }
 }
[編集]

2.アプリケーションの new Display() のを変更 #

変更前

display = new Display();

変更後

DeviceData data = new DeviceData();
data.tracking = true;
display = new Display(data);
this.sleak = new SleakAdapter(new Sleak());
[編集]

3. SleakのWindowを表示するコードを作成 #

こいつを実行してやれば、Sleakのウィンドウが開く。

if(!sleak.isDisposed() && shell.isVisible()) {
    sleak.setActive();
} else {
    sleak.open();
}
[編集]

自前でやる場合 (2005-07-19) #

自前で同じことをするなら、Displayを次のようにして作成して:

final DeviceData data = new DeviceData();
data.tracking = true;
display = new Display(data);

DeviceData#objectsとerrorsを得て、表示してやればよい。

final DeviceData data = display.getDeviceData();
if (!data.tracking) {
    return;
}
final Object[] objects = data.objects;
final Error[] errors = data.errors;
[編集]

参考 #

Class Device

Class DeviceData