08-17-2011, 05:28 PM,
|
|||||
|
|||||
importされたパッケージ
続けて投稿失礼します。
Curlで、メモリ内キャッシュからパッケージもしくはマニフェストが解放されるタイミングを取得することはできないでしょうか。 もしくはメモリ内から解放されない様にする方法がございましたら、是非ご教授お願い致します |
|||||
08-18-2011, 05:31 PM,
|
|||||
|
|||||
RE: importされたパッケージ
質問の意図が明確に捉えられてないのですが、
理解した限りで回答します。 1.文中のパッケージ/マニフェストが 動作中のアプレットで利用される(またはされている) モジュール一式を指している場合 →アプレット内で読み込まれたパッケージは メモリに展開された後開放されることはありません。 開放されてしまうと、同名で別インスタンスの パッケージ定義が発生してしまうからです。 強いて言うならアプリケーションの終了時に開放されます。 2.文中のパッケージ/マニフェストが リフレクションで利用されるPackage及びComponentManifestクラスの オブジェクトの場合 →開放されるタイミングは通常のガベージコレクトと同じで、 インスタンスが参照されなくなったときに開放されます。 Singletonなどの構造でオブジェクトを維持する構造を作れば メモリ内に維持させることもできますが、 あまりメリットが無いように思えます。 ちなみに、そもそもやろうとしていることは何でしょうか? 場合によっては全く別の解決案がある気がしました。 |
|||||
08-19-2011, 09:02 AM,
|
|||||
|
|||||
RE: importされたパッケージ
(08-17-2011, 05:28 PM)森口 慶紀 Wrote: 続けて投稿失礼します。I have to rely on Google translate to read your question so I am not sure I correctly understand your question, but it seems that you are asking about how long packages are kept in memory. Packages that are loaded using the 'import' or 'import-package' are stored in a shared memory area so that they can be used by multiple applets. Such a package will not be unloaded from memory until there are no remaining applets that have imported it. Flushing of unused packages occurs after an applet finishes loading, thus reloading an applet will not flush a package from memory unless the applet has been changed to no longer import the package. You can also create a new 'OpenPackage' object and use it to 'evaluate' code dynamically. Such packages are not shared with other applets and can be reclaimed by the Curl garbage collector when there are no longer any references to them. So if you want to do a lot of dynamic code generation but don't want it to live as long as the applet, you should use this technique. |
|||||
09-13-2011, 07:57 AM,
|
|||||
|
|||||
RE: importされたパッケージ
お返事が遅くなってしまい、誠に申し訳ありません。 >nmyzkさん 申し訳ありません。特にやろうとしていることというのはなく、できるのかな? といったレベルで質問させていただいておりました・・・ ご回答いただき、ありがとうございます >cbarberさん Thank you for my question! I understand your anwer |
|||||
09-28-2011, 08:58 AM,
(This post was last modified: 09-28-2011, 09:23 AM by alchimiste.)
|
|||||
|
|||||
RE: importされたパッケージ
(08-19-2011, 09:02 AM)cbarber Wrote: Packages that are loaded using the 'import' or 'import-package' are stored in a shared memory area so that they can be used by multiple applets. Such a package will not be unloaded from memory until there are no remaining applets that have imported it. Flushing of unused packages occurs after an applet finishes loading, thus reloading an applet will not flush a package from memory unless the applet has been changed to no longer import the package. But is it possible to reload a package that has been loaded already without restarting an applet? I found from Curl6.0, packages can be reloaded by dynamically importing manifest and package. It' very useful in applications which has many menu, and each of those menu is a independent manifest. Here is a sample code: Code: let mf:ComponentManifest = {with-file-caching-style FileCachingStyle.resynchronize do I'm using this code for loading menu applications in the main appication with OCC |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
1 Guest(s)
1 Guest(s)