Отладка outofmemoryexception

Вы устанавливаете fields на CreateView, поэтому вы позволяете Django автоматически сгенерировать ModelForm для вас. Форма использует ModelMultipleChoiceField, который происходит от ModelChoiceField, описанного здесь .

Если вы прочитаете последний абзац этого раздела, вы увидите, что отображаемые значения для такого поля получены из метода модели __str__, или вы можете переопределить это с помощью метода label_from_instance().

Вот что вам нужно сделать, переопределить этот метод в ModelMultipleChoiceField. Но для этого вам нужно указать свою собственную форму.

Итак:

  • Создайте свою собственную ModelForm для вашей модели Hotel (HotelForm).
  • Создайте подкласс ModelMultipleChoiceField (ColleagueChoiceField) и переопределите метод label_from_instance(), чтобы отобразить pk.
  • Установите поле colleagues в HotelForm как ColleagueChoiceField.
  • Удалите атрибут fields на вашем виде и установите вместо form_class значение HotelForm.
  • [Тысяча сто двадцать девять]

5
задан GurdeepS 25 April 2009 в 20:15
поделиться

4 ответа

Вы должны сделать дамп памяти вашей программы в момент, когда происходит OutOfMemoryException и проанализировать, что занимает столько памяти.

У Тесс Феррандез в своем блоге есть отличная серия How-To .

5
ответ дан 14 December 2019 в 04:47
поделиться

Я могу предложить здесь две вещи:

1) Возможно, на вашей машине недостаточно памяти. Ознакомьтесь с некоторыми идеями по http://digioz.blogspot.com/2008/11/visual-studio-systemoutofmemory.html

2) Попробуйте скомпилировать проект вне Visual Studio с помощью утилиты командной строки VS и запустите msbuild "SolutionfileName.sln". Неужели это все еще дает сбой?

Надеюсь, это поможет:)

1
ответ дан 14 December 2019 в 04:47
поделиться

Я надеюсь, что вы имеете в виду ошибку времени выполнения, а не ошибку времени компиляции.

Обычно это происходит, если у вас есть растущий список, который сохраняется в статическом поле или в масштабе всей системы. Контейнер ASP.NET.

Вы можете запустить приложение в профилировщике, например:

Red Gate Ants Profiler

1
ответ дан 14 December 2019 в 04:47
поделиться

Похоже, вы уже знакомы с некоторыми недостатками и преимуществами.

Некоторые другие: а) Позволяет поддерживать правильную оптимизацию хвостового вызова, даже если базовая реализация не поддерживает ее б) Легче создавать такие вещи, как языковой уровень "трассировки стека" в) Проще добавить правильные продолжения, как вы указали

. Недавно я написал простой интерпретатор «Схемы» на C #, который первоначально использовал стек .NET. Затем я переписал его для использования явного стека, так что, возможно, вам поможет следующее:

Первая версия использовала неявный стек времени выполнения .NET ...

Изначально это была просто иерархия классов с различными формы (лямбда, пусть и т. д.) являются реализациями следующего интерфейса:

// A "form" is an expression that can be evaluted with
// respect to an environment
// e.g.
// "(* x 3)"
// "x"
// "3"
public interface IForm
{
    object Evaluate(IEnvironment environment);
}

IEnvironment выглядел так, как вы ожидаете:

/// <summary>
/// Fundamental interface for resolving "symbols" subject to scoping.
/// </summary>
public interface IEnvironment
{
    object Lookup(string name);
    IEnvironment Extend(string name, object value);
}

Для добавления «встроенных» в мой интерпретатор Scheme у меня изначально был следующий интерфейс:

/// <summary>
/// A function is either a builtin function (i.e. implemented directly in CSharp)
/// or something that's been created by the Lambda form.
/// </summary>
public interface IFunction
{
    object Invoke(object[] args);
}

Это было, когда он использовал неявный стек времени выполнения .NET. Определенно было меньше кода, но было невозможно добавить такие вещи, как правильная хвостовая рекурсия, и, самое главное, моему интерпретатору было неловко предоставить " Попробуйте этот подход . Я понимаю, что основной причиной вашей проблемы является слабая отладка, проверьте log4net . Также просто if (DebuggingFlag == true) Response.Write ("DebugMsg")

может быть полезен настолько просто и абсурдно, насколько это звучит ...

1
ответ дан 14 December 2019 в 04:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: