locked
Silverlightでメモリが増え続ける気がするのですが RRS feed

  • 質問

  • いつもお世話になっております。

    現在、Silverlight 3で作成した業務アプリをIE7でホストしています。
    基本的にIEを落とさないで使用するらしいのですが、使用し続けていくとメモリがどんどん増えていってしまいました。(最大でIEのメモリが1Gを超えました)

    簡単なアプリを作って試していたところ、Popupコントロールを使う部分で少しずつ増えていくような感じでした。(実際に確認したのはChildWindowとComboBoxのDropDownです)

    試したことを簡単に書くと
    1.Visual Studio 2008(SP1)でSilverlight3アプリを新規に作成
    2.ChildWindowを追加してLayoutRootに「Button、TextBlock、Rectangle、ComboBox、ListBox」を適当に配置
    3.MainPageにButtonを9個置く(何となくコントロールの数が多い方がリークが分かると思って・・・)
    4.9個のButtonのClickイベントに同じハンドラを登録。内容は下記の通り

    private void Button_Click(object sender, RoutedEventArgs e) {
     ChildWindow1 dlg = new ChildWindow1();
     dlg.Show();
    }


    5.「Buttonクリック -> 出てきたChildWindow1を閉じる」を、マウスの自動クリックプログラムを使って延々と繰り返す

    結果
    ・OSはVista/XPで、ブラウザはIE6~8で試したところ、大体増えます。(何かの組み合わせで増えないというわけではなく、極々たまに増えない時があるというか・・)
    ・12時間位続けたところ、40MByte位増える時もありました。
    ・Virtual PC上のWindows XPで試している時に一度×ボタンで閉じた(状態を保存する)ら復帰後は増えなくなった、ということもありました。
    ・プラグインをSilverlight 4(beta)にして試してみると増え方がなだらかになるような気がします。
    ・Windbg+sos.dllでダンプしてみましたが、managedオブジェクトの数は起動時と増えた後であまり変わりませんでした。(ChildWindow1は常に10個ほどでした)
    ・aspxでのホストが危険かも、という書き込みを見かけたのでhtmlでホストしてますが変わりませんでした。

    というようなことを半月ほど調べていたのですが手詰まりとなり、みなさんのお知恵を借りたいと思い書き込みました。
    長文で読みづらいとは思いますが、何か情報があリましたらよろしくお願いします。

    2009年12月3日 8:28

回答

  • 私は、この現象について情報を持っているわけではないのですが
    再現性が高くて、再現手順が確立している場合は、Microsoft Connectで
    聞いてみるといいかもしれません。

    https://connect.microsoft.com/default.aspx

    確かWindows Live IDあたりが、あれば登録できたような記憶があります・・・。
    ここの会員制プログラム一覧の「Visual Studio and .NET Framework Japanで
    いけると思います。

    # Visual Studio and .NET Framework Japanのページから対象製品の部分を抜粋
     Visual Studio 製品ファミリーは、Microsoft Visual Studio、Microsoft Team Foundation Server、
     .NET Framework、Microsoft Silverlight、そしてMicrosoft Windows AzureTM Tools for Visual Studio を含みます。
    かずき Blog:http://blogs.wankuma.com/kazuki/
    • 回答としてマーク puni 2009年12月4日 1:21
    2009年12月3日 10:00

すべての返信

  • 私は、この現象について情報を持っているわけではないのですが
    再現性が高くて、再現手順が確立している場合は、Microsoft Connectで
    聞いてみるといいかもしれません。

    https://connect.microsoft.com/default.aspx

    確かWindows Live IDあたりが、あれば登録できたような記憶があります・・・。
    ここの会員制プログラム一覧の「Visual Studio and .NET Framework Japanで
    いけると思います。

    # Visual Studio and .NET Framework Japanのページから対象製品の部分を抜粋
     Visual Studio 製品ファミリーは、Microsoft Visual Studio、Microsoft Team Foundation Server、
     .NET Framework、Microsoft Silverlight、そしてMicrosoft Windows AzureTM Tools for Visual Studio を含みます。
    かずき Blog:http://blogs.wankuma.com/kazuki/
    • 回答としてマーク puni 2009年12月4日 1:21
    2009年12月3日 10:00
  • かずきさんありがとうございます。

    こんなページがあるんですね。
    さっそくフィードバックを送ってみたいと思います。

    2009年12月4日 0:27
  • 早速フィードバックしていただけたみたいですね。
    https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=517969

    情報がここで途切れないように、リンクはっておきます~。
    かずき Blog:http://blogs.wankuma.com/kazuki/
    2009年12月4日 8:36

  • >早速フィードバックしていただけたみたいですね。
    >https://connect.microsoft.com/VisualStudioJapan/feedback/ViewFeedback.aspx?FeedbackID=517969

    あの内容では、下手するととりあってもらえません。

    最低限

    >試したことを簡単に書くと

    と同程度に再現手順を書きましょう。

    Connect は技術サポートではないので、その辺誤解の無いように。


    2009年12月4日 10:04
  • かずきさん
    リンクをありがとうございます。
    私がやっておかなければいけなかったのに、忘れていました。

    渋木さん
    ご指摘ありがとうございます。
    修正しておきました。
    ここに書いた内容はみんな書けたと思います。
    2009年12月7日 0:25
  • >ここに書いた内容はみんな書けたと思います。

    対応ありがとうございます。

    MS の方で現象が再現できれば、なんらかの対策がなされるかもしれません。
    (問題の内容・程度によっては「次のバージョンで対応」になることもままあります)

    技術的なサポートが必要な場合には、Connect に報告するのではなく、MS のサポート窓口で技術サポート契約を結んでください。
    2009年12月7日 3:26