我正在开发一个.net应用程序,它在b-tree berkeley db中每300毫秒存储一些数据。 我遇到了一个奇怪的RAM行为:我的应用程序的过程是使用60mb的RAM而且它没有增长。然而,由于内存不可用,PC RAM缓慢减少(几个小时),直到电脑停止工作。我的PC上安装了4 GB的RAM。
这就是我在我的应用程序中所做的事情(或多或少):
//Sub called every 300 ms //lstTags containst 1000 objects
Public Sub InsertReceivedEvents(ByVal arBytesToInsert As Byte(), ByVal dtTimestamp As DateTime)
For Each oMyTag As Tag In lstTags
Select Case oMyTag.iDataType
Case TagDataTypeEnumerator.eTypeOfDataBOOL
arTempArray = New Byte(0) {}
Array.Copy(arBytesToInsert, oMyTag.iTagOffset, arTempArray, 0, 1)
Case TagDataTypeEnumerator.eTypeOfDataINT
arTempArray = New Byte(1) {}
Array.Copy(arBytesToInsert, oMyTag.iTagOffset, arTempArray, 0, 2)
Case TagDataTypeEnumerator.eTypeOfDataREAL
arTempArray = New Byte(3) {}
Array.Copy(arBytesToInsert, oMyTag.iTagOffset, arTempArray, 0, 4)
Case TagDataTypeEnumerator.eTypeOfDataSTRING
arTempArray = New Byte(49) {}
Array.Copy(arBytesToInsert, oMyTag.iTagOffset, arTempArray, 0, 50)
End Select
Try
//Put event in relative db
oKeyToEnter = New DatabaseEntry()
oKeyToEnter.Data = System.Text.Encoding.ASCII.GetBytes(dtTimestamp.ToString("yyyyMMdd_HHmmss_fff"))
oDataToEnter = New DatabaseEntry(arTempArray)
lstDbsEvents(oMyTag.iTagID).timeMachineBTreeDB.Put(oKeyToEnter, oDataToEnter)
Catch ex As Exception
LogErrorManagement.writeLogToFile("There was an error writing events to db", ex)
End Try
Next
End Sub
为什么会这样?
提前致谢。