Утечка памяти в C# APIC#

Место общения программистов C#
Ответить
Anonymous
 Утечка памяти в C# API

Сообщение Anonymous »

Даже при очень простом запросе мой API C# заполняется ненужными строками byte[] и т. д., и я действительно не могу найти нигде, где, по моему мнению, может быть утечка памяти.
небольшое описание:

Метод собирает все записные книжки пользователя и возвращает их.
Он распознает пользователя по BearerToken .
Вот код, который вызывается, но при этом на каждый запрос потребляется и никогда не освобождается еще несколько килобайт оперативной памяти:
GetCurrentUser:

Код: Выделить всё

public static async Task GetCurrentUser(DataBaseContext _db, string bearerToken)
{
//get from the bearer token the username
//create jwt token
var token = new JwtSecurityToken(jwtEncodedString: bearerToken);

//get the expiry from the token
var userName = token.Claims.FirstOrDefault(x => x.Type == ClaimTypes.NameIdentifier)?.Value;

//get the whole user form the db
var user = _db.User
.Include(x => x.Invoices)
.Include(x => x.Notebook)
.Include(x => x.Logins)
.FirstOrDefaultAsync(x => x.Username == userName);

return await user;
}
GetCurrentUser и GetAll

Код: Выделить всё

private async Task GetCurrentUser()
{
// Get the bearer token from the header
var bearerToken = HttpContext.Request.Headers["bearerToken"].ToString();
var user = await UserCore.GetCurrentUser(_db, bearerToken);
return user;
}

[HttpGet]
[Route("GetAll")]
public async Task GetAll()
{
//set the users traceId
Guid traceId = Guid.NewGuid();

//get the user
var user = await GetCurrentUser();
if (user == null)
return new BadRequestObjectResult(ResponseMgr.CreateResponse(400, traceId, "The user does not exist"));

//get all notes
var notes = user.Notebook.ToList();

//return all notes
return new OkObjectResult(ResponseMgr.CreateResponse(200, traceId, "All notes", new Dictionary { { "notes", notes } }));
}
это карта кучи:

Изображение
Изображение

Это одна из вещей, которые я не понимаю: это список с «повторяющимися строками», в первом столбце указано «значение», во втором «потеряно» и в третьем «количество». " и внизу "всего"
Дело в том, что смайлы - это содержимое/ценность одного блокнота, но почему он сохраняет данные и не освобождает их после запроса, поэтому Подводя итог, я нашел утечку, но не там, где она произошла.
Изображение

Все в одном, я не могу найти местоположение, и если я сделаю запрос 50 раз, то API потребляет несколько МБ ОЗУ, и они освободят, даже если GC не сможет этого сделать. п>

Подробнее здесь: https://stackoverflow.com/questions/766 ... -sharp-api
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»