无释放的电源记忆未释放



在应用程序中,我有一个任务,该任务一直在消耗内存,直到它崩溃为止。使用ProcessExplorer观看,我发现以下函数每次称为50MB(称为30次)。即使我调用garbageCollect,该功能即使退出时也不会释放此内存。请注意,功能称为:

Of_IsOrario, Of_GetCell, Of_GetRowCount, Of_GetColCOunt 

只是返回值(不是分配内存)

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 

我不知道您的PowerBuilder版本是什么,但请尝试替换ISNULL()

cr#304251 PB企业语言 - 运行时8.0.3 a blob上的上行那不是阵列,大斑点上的功能正在泄漏记忆。在任何变量上执行它们时,这些功能正在泄漏。这是一个错误,但不能在8.0.3补丁中修复。解决方法也是如此使用实际的数据类型变量。

cr#279144 PB Enterprise DW-运行时8.0.1 iSnull of Dot表示法DataWindow列数据正在泄漏内存。

cr#217105 pb企业窗口 - 运行时7.0.2内存使用情况上升时一个应用程序正在开发或运行时(P代码和机器代码),当ISNULL与任何数据类型一起使用。

[...]

它还添加了以下内容:

Yield()
GarbageCollect()

最新更新