掲示板一覧   -   トピック一覧
   EA API
     'Gdip'のタイプ初期化子とは?


スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
未登録ゲスト
投稿日時: 2007-4-25 11:34

'Gdip'のタイプ初期化子とは?

現在、DuplicateNameサンプルを参考に、プロジェクト内の全ての要素を取得する処理をC#で実装しております。

データの量が少ないうちは、問題なく動くのですが、データ量が
多くパッケージ間のリンクなどがあると、APIの一つ一つの
呼び出しに非常に時間がかかります。
最終的には
"'Gdip'のタイプ初期化子が例外をスローしました"
というエラーが発生してしまいます。
デバッグしながら実行すると上手くいってしまうので、原因の特定が困難な状況です。

そもそも、'Gdip'云々のエラーとはどういう意味なのでしょうか?
sugimoto
投稿日時: 2007-4-25 12:01
EA Administrator
投稿: 1895

Re: 'Gdip'のタイプ初期化子とは?

'Gdip'は、Graphic Device Interface Plus のことだと思いますが、
EAからはご指摘いただいたようなエラーは出力しておりません。

また、過去に同様のエラーが発生した例はなく、原因は明確になって
おりませんが、ご連絡いただいた状況からメモリ不足が発生している
可能性があるのではないかと考えております。

お手数お掛けしますが、プロジェクト内の全ての要素を取得する処理
を実行している際の、メモリ使用状況をご確認いただけますでしょうか?

また、パッケージ間のリンクなどがあると、APIの一つ一つの呼び出しに
非常に時間がかかるとありますが、どのような処理をされているか
合わせてご連絡いただきますと、何か原因が分かる可能性があると思います。

ご確認のほど、よろしくお願いいたします。
未登録ゲスト
投稿日時: 2007-4-25 13:55

Re: 'Gdip'のタイプ初期化子とは?

'Gdip'はEAからの出力ではないのですね。

アドイン実行でエラーが出た後は、通常の操作(例えばXMI出力)
した場合でも"リソース不足"のエラーが表示されます。
→ ということはきっとメモリ不足なんでしょうね。

メモリの使用量は、プロジェクトオープン直後は45MB位で、
アドイン実行後は400MB以上に膨れます。
ただ、物理メモリにはまだ余裕があります。

このプロジェクトにはEAで開くのに15秒以上かかる図が、7つ
あります。
XMI出力をした場合でも、5分以上は返ってきません。
この辺がAPIの呼び出しに時間がかかるのと関係してそうです。
リンク云々はこのプロジェクトに"xxへのリンク"というのが
たくさんあったから推測しただけです。

ところで、XMI出力中のメモリ使用状況を見ていると、定期的に
メモリが開放されているようですが、どうやっているのでしょうか?
未登録ゲスト
投稿日時: 2007-4-25 14:19

Re: 'Gdip'のタイプ初期化子とは?

自己レスです。

定期的にGC.Collect()を実行することでメモリの使用量が
抑えられ、処理が最後まで行くようになりました。

やはり、メモリ不足だったようです。
sugimoto
投稿日時: 2007-4-25 14:35
EA Administrator
投稿: 1895

Re: 'Gdip'のタイプ初期化子とは?

ご確認ありがとうございました。
また、問題が発生しなくなったようで安心いたしました。

ご対応いただいた内容はヘルプの「ヒントとテクニック」の
"EAが終了しない場合"欄にも記載がありますので、ご確認下さい。
弊社の回答が間に合わず、申し訳ございませんでした。

また、アドインの処理にて情報の更新を行っている場合は、
Repository.EnableUIUpdatesをFalseにすることでアドインによる情報
更新時の描画を抑止することができますので、APIの実行時間が改善
される可能性はございます。

なお、XMI出力中に定期的にメモリを開放する方法につきましては、
ある一定のメモリの上限を超えないように、ご対応いただいたような
処理を行っております。

そのほかお困りのことなどございましたら、ご連絡下さい。
未登録ゲスト
投稿日時: 2007-4-25 14:43

Re: 'Gdip'のタイプ初期化子とは?

丁寧な対応ありがとうございました。

アドインで作成したオブジェクトはそんなに大きくないので
GCがこんなに効くとは予想もしませんでした。
きっと、COMとの橋渡しをする部分でいろいろと、オブジェクト
を生成していたりするのですね。
sugimoto
投稿日時: 2007-4-25 15:01
EA Administrator
投稿: 1895

Re: 'Gdip'のタイプ初期化子とは?

C#で作成したアドインをいくつか確認してみましたが、
メモリ使用量が極端に増加するものはありませんでした。

メモリ不足がある場合に、GCにて解決することは可能ですが、
アドイン実行時にメモリ使用量が多い点につきましては、
プロジェクトファイルのサイズやアドインの作成内容などに
起因している可能性が考えられます。

そのほか何か情報がありましたら、お寄せください。

今後ともよろしくお願いします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ