Я загружаю содержимое AppendBlob с помощью метода DownloadText
, и я испытываю утечку памяти. С кем это уже случилось? Код, который я использую:Утечка памяти с помощью AppendBlob
private string[] GetBlobLines(CloudAppendBlob blob)
{
string text = "";
try
{
lock (_blobContainerLock)
{
text = blob.DownloadText();
}
}
catch (Exception e)
{
WriteToTable(MessageType.ERROR, "Error reading log lines: " + e.Message);
}
return text.Split('\n'); ;
}
public string GetLastLogRows(uint count)
{
var sb = new StringBuilder();
var blob = _currentBlob;
int lineCount = 0;
int blobOffset = 0;
while (lineCount < count)
{
var lines = GetBlobLines(blob);
var blobLineCount = lines.Count();
var i = blobLineCount - 1;
while ((lineCount < count) && (i > -1))
{
sb.AppendLine(lines[i--]);
lineCount++;
}
if (lineCount < count)
{
blobOffset++;
blob = _blobContainer.GetAppendBlobReference($"{BLOB_PREFIX}{_currentBlobIdx - blobOffset}");
if (!blob.Exists())
break;
}
}
return sb.ToString();
}
Возможно, у вас ошибка программирования. Можете ли вы разместить свой код. Наверное, вам не хватает использования. – Peter
Я не могу найти метод DownloadText с аргументами в документации microsoft https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudappendblob.aspx, это собственный метод расширения, который вы реализовали ? Или вы используете более старую версию DLL-хранилища? – Peter
Нет, все 4 параметра по умолчанию равны null. – azrael