#itext7 #blazor-webassembly
Вопрос:
В приложении Blazor WASM (.NET 5) у меня есть компонент Razor, в котором я создаю таблицу примерно с 4 строками и следую руководству с веб-сайта iText, найденного здесь.
var dataTable = new Table(5, true)
.UseAllAvailableWidth()
.SetBorder(Border.NO_BORDER);
dataTable.AddColumnHeader("Header 1");
dataTable.AddColumnHeader("Header 2");
dataTable.AddColumnHeader("Header 3");
dataTable.AddColumnHeader("Header 4");
dataTable.AddColumnHeader("Header 5");
document.Add(dataTable);
for (int i = 0; i < FilteredItems.Count; i )
{
var item = FilteredItems.ElementAt(i);
dataTable.AddColumnData(item.Item1);
dataTable.AddColumnData(item.Item2);
dataTable.AddColumnData(item.Item3);
dataTable.AddColumnData(item.Item4);
dataTable.AddColumnData(item.Item5);
if (i % 50 == 0)
{
dataTable.Flush();
}
}
dataTable.Complete();
document.Close();
Я получаю следующую ошибку для того, что выглядит как каждый флеш Error: Garbage collector could not allocate 16384u bytes of memory for major heap section.
Я подозреваю, что это может быть ограничением Блейзора. Кто-нибудь еще сталкивался с этой проблемой?
Комментарии:
1. Уже пробовали использовать предварительный просмотр .net 6? Не думайте, что это сработает, но попробуйте — это ошибка моно. Почему нет подкачки для доступных данных? На каком экране вы могли бы отображать строки таблицы 4k? Нет необходимости загружать все в одну таблицу.
2. Подкачки нет, потому что мы храним все на стороне клиента в базе данных indexeddb, поэтому нет проблем с загрузкой всего в таблицу, проблема в том, что она просто распечатана. Мы сделали обходной путь, ограничив количество записей, которые можно распечатать. Мы вернемся к этому позже, чтобы попробовать .NET 6. Спасибо за информацию
Ответ №1:
- Низкая пропускная способность для большого объема оперативной памяти
- Отсутствие низкой задержки для небольшой оперативной памяти
следовательно:
Отключите низкую задержку.
https://docs.microsoft.com/en-us/dotnet/standard/garbage-collection/latency?redirectedfrom=MSDN
в app.config
<configuration>
<runtime>
<gcServer enabled="false" />
</runtime>
</configuration>