Другая вещь попробовать, если Вы знаете количество объектов заранее, состоит в том, чтобы использовать HashMap (международная способность, двойной коэффициент загрузки) конструктор вместо без аргументов по умолчанию, который использует значения по умолчанию (16,0.75). Если число элементов в Вашем HashMap превысит (способность * коэффициент загрузки) тогда, то основной массив в HashMap будет изменен к следующему питанию 2, и таблица будет перефразирована. Этот массив также требует непрерывной области памяти так, например, если Вы удвоитесь от 32768 до 65 536 массивов размера, то Вам будет нужен блок 256 КБ свободной памяти. Для предотвращения дополнительных штрафов выделения и перефразирования просто используйте большую хэш-таблицу от запуска. Это также уменьшит шанс, что у Вас не будет непрерывной области памяти достаточно большой для установки карте.
Я знаю, что это более старая статья, но я хочу, чтобы у будущих разработчиков была такая возможность. У меня была такая же потребность, и идея запуска фонового процесса просто для того, чтобы получить PDF внутри веб-приложения, ужасна.
Вот еще один вариант: https://github.com/TimothyKhouri/WkHtmlToXDotNet
Это родная оболочка .NET для wkhtmltopdf.
Пример кода здесь:
var pdfData = HtmlToXConverter.ConvertToPdf("<h1>COOOL!</h1>");
Обратите внимание, это не потокобезопасное на данный момент - я работаю над этим. Так что просто используйте монитор или что-то или замок.