2016-11-28 42 views
1

アプリケーションでは、クラッシュするまでメモリを消費し続けるタスクがあります。 processExplorerを見てみると、次の関数は呼び出されるたびに約50MBを割り当てます(30回呼び出されます)。 GarbageCollectを呼び出しても、関数が終了するとこのメモリは解放されません。以下のように呼ばれる関数のことに注意してください。)私は、PowerBuilderのバージョンが何であるかを知っているが、IsNullのを(交換してみませんpowerbuilderメモリが解放されていない

long ll_file, i, j, ll_bytes, ll_fileWithTitles 
double ld_value 
string ls_line 
n_cst_string str 



ll_fileWithTitles = FileOpen(as_fileName + "text.txt", LineMode!, Write!, Shared!, Replace!, EncodingAnsi!) 
ll_file = FileOpen(as_fileName, LineMode!, Write!, Shared!, Replace!, EncodingAnsi!) 

if ll_file < 0 then 
     MessageBox("Σφάλμα", "Could not create file " + as_fileName) 
     return false 
end if 

for i = 1 to Of_GetColCount() 
     if in_tasks[i].Of_IsOrario() then 
       ls_line += "~tO" + in_Tasks[i].is_symbol 
     else 
       ls_line += "~t" + in_Tasks[i].is_symbol 
     end if     
next 
FileWrite(ll_fileWithTitles, ls_line) 

for i = 1 to Of_GetRowCount() 
     ls_line = "" 
     for j = 1 to Of_GetColCount() 
       ld_value = -Of_GetCell(i, j) 

       if ls_line <> "" then ls_line += "~t" 
       ls_line += string(ld_value) 
     next 
     ls_line = str.Of_GlobalReplace(ls_line, ",", ".") 
     if IsNull(ls_line) then 
       ls_line = ls_line 
     end if 
     ll_bytes = FileWrite(ll_file, ls_line) 
     ls_line = string(in_matrix[i].il_agentId) + "~t" + ls_line 
     ll_bytes = FileWrite(ll_fileWithTitles, ls_line) 
next 

FileClose(ll_file) 
FileClose(ll_fileWithTitles) 

return true 
+0

PowerBuilderのバージョン? –

+0

なぜあなたは 'if IsNull(ls_line)then ls_line = ls_line ... 'という構文を持っていますか?それは何かを変えますか?私は 'ls_line =" "' –

答えて

0

Of_IsOrario, Of_GetCell, Of_GetRowCount, Of_GetColCOunt 

がちょうど(メモリを割り当てていない)の値を返す

CR#304251 PBエンタープライズ言語 - ランタイム8.0.3配列ではない任意のブロブ 上のUpperBound、および大きなブロブ上のIsNull関数はメモリ を漏らしています。これらの関数は、任意の変数に対して実行するときに漏れています。 これはバグですが、8.0.3パッチで修正することはできません。回避策も実際のデータ型変数 を使用しています。

CR#279144 PBエンタープライズDW - ランタイム8.0.1ドット表記のIsNullに データウィンドウ列のデータがリークしています。

CR#217105 PBエンタープライズウィンドウ - ISNULLは、任意のデータ型を使用する場合、アプリケーションは、開発または実行時(Pコードとマシンコード)で実行されている場合 をランタイム7.0.2メモリ使用量が上がります。

[...]

それはまた次のように追加します。

Yield() 
GarbageCollect() 
関連する問題