Я искал поисковое решение для веб-приложения (.NET 4), которое было написано поставщиком.MSXML и .NET - Использование памяти
У нас были проблемы с этим вопросом в течение последних нескольких недель.
Первоначально основное внимание уделялось стороне базы данных. Теперь, когда я чувствую себя комфортно, управляя этой частью уравнения, я потратил немало времени на отладку веб-приложения, чтобы узнать, откуда исходит фактическая скорость.
Я обнаружил, что в этой конкретной части веб-приложения открывается новое окно Internet explorer для отображения большого количества XML-данных, которые возвращаются из базы данных.
После просмотра кода и использовать отладчик, чтобы попытаться выяснить, что происходит ... вот что я нашел:
Когда код на этой конкретной странице, заполнить все, процесс Iexplore имеет частный рабочий комплект - 692 044 тыс. Кажется, это результат многочисленных элементов управления activex для msxml3.dll.
После некоторых исследований я обнаружил этот Майкрософт: http://support.microsoft.com/?scid=kb%3Ben-us%3B815112&x=15&y=14
Он заявляет:. «Microsoft не поддерживает использование MSXML (COM на основе XML-анализаторе от Microsoft) в приложениях .NET MSXML использует резьб модели и механизмы сбора мусора, которые несовместимы с .NET Framework. Использование MSXML в приложениях .NET через COM-совместимость может привести к неожиданным проблемам, которые трудно отлаживать. Microsoft не рекомендует или не поддерживает непосредственную инстанцирование и использование объектов MSXML. NET, и Microsoft не рекомендует или не поддерживает сортировку указателей интерфейса MSXML через границу взаимодействия. "
Это одна часть кода, который создает объект ActiveX:
var oTmp = new ActiveXObject("MSXML2.Domdocument");
oTmp.loadXML('<plan_data>' + returnValue + '</plan_data>');
Process Explorer поднимает несколько Msxml3.dll, загруженного в процесс IExplore по мере увеличения памяти. Даже после закрытия этого конкретного окна он, похоже, не очищается должным образом, потому что он все еще использует около 220 000 К памяти (вероятно, из-за механизмов сбора мусора, перечисленных выше).
Итак, мой вопрос: может ли кто-нибудь здесь, кто знаком с этим, предлагать советы, если это похоже на плохо разработанный раздел веб-приложения?
Я хотел бы получить эту информацию у разработчика и попросить их взглянуть на нее, но я надеялся, что кто-то сначала даст мне профессиональный совет.
спасибо.
Почему ты сосредоточить внимание на стороне базы данных * до того, как вы измерили узкое место? ;-) Первое правило оптимизации - «сначала измерение». –
Потому что мне сказали! :) – user1441145
один вопрос: зачем вам нужно «отображать большое количество XML-данных, которые возвращаются из базы данных»? Пользователи не собираются читать каким-либо разумным способом огромное количество XML ... Где этот XML заканчивается? –