メモリ解放方法について

お世話になっております。

大量データを処理する時、特に、複雑なデータ編集など、想定以上のメモリが消費されています。
ついに、メモリ異常が発生してしまいます。
上記に対して、メモリ解放に方法があれば、教えて頂ければと思われます。

1 Like

直接の(能動的な)解放は基本的にできないです。
.NET Frameworkにはそれを実行する命令もあるにはあるのですが、通常のUiPathの使用の範疇であれば、必要に応じて、それとほぼ同等のことを自動的に行われる筈なので。

どちらかというと、ワークフローの作り方を工夫すると良いと思います。変数は、そのスコープの実行が終わるまで破棄されないので、必要以上に広いスコープを変数に設定すると、それだけメモリの使用量が多くなります。
最小限のスコープにしてもメモリが足りないのであれば、あとは処理をわけて、一部の編集が終わったら一旦書き出してその処理を終了し、後続の処理で再びロードして作業する、等で軽減できるかもしれません。

2 Likes

Do not pass unnecessary arguments. . For example, you have given the direction of an argument like- in / out.But you need only specifically “in” or “out”.so just select one only It helps to free up a lot of memory.

不要な引数を渡さないでください。 。たとえば、in / outのように引数の方向を指定します。ただし、特に必要なのは "in"または "out"だけです。ただ1つだけ選択します。これは、多くのメモリを解放するのに役立ちます。

1 Like

Honnoka様

ありがとうございました。

syedabidraza様

Thank you very much.
ありがとうございました。

@Dan_Shao
パフォーマンスの話だと、↓が最近面白かったので共有しておきます。データテーブルのフィルタ条件を工夫すると、パフォーマンスが向上するって話です。

2 Likes

@Jumbo

ご共有、ありがとうございます。

根本的解消については、皆様がおっしゃるように、

  • ワークフローの見直し
  • 変数スコープの見直し

になるかと思います。

※以下、ご参考
メモリ開放についてだけでいうと、Windowsのコマンドプロンプトでできます。
batファイルを作成し、batファイルをたたくアクティビティを作ればメモリ開放できそうです。
batでメモリ解消する対象をUiPathにした場合、正常に動作するかはわから&おそらく非推奨のやりかたのため、おススメできませんが。。
ちなみにコマンドプロンプトで該当のexeファイル名で「empty.exe *」でメモリ開放できます。

@nekosuke

ご回答、ありがとうございました。