crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Постоянно течет память при исполнении скрипта
igor_bogomolov
  опции профиля:
сообщение 6.9.2010, 17:34
Сообщение #1


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

Спасибо сказали: 235 раз(а)




Репутация:   29  


Непрерывно течет память при исполнении скрипта. Кто сталкивался с подобным? Может я что то не правильно делаю?
За пример можно взять следующий код

bool Param::scriptEval()
{
    QString sFunction = QString(QLatin1String("function vparam(a,b,c,d,e) { return (e<<16) | a | b | c | d; }"));

    QScriptValue sv = scriptEngine->evaluate(sFunction);
    if (scriptEngine->hasUncaughtException()) {
        qDebug() << tr("Script for param '%1' error: '%2' for '%3'")
                   .arg(m_sName).arg(sv.toString()).arg(sFunction);
        return false;
    }

    QScriptValueList svlArgs;
    svlArgs << 0 << 0 << 0<< 0 << 1;

    QScriptValue fnObj = scriptEngine->globalObject().property(QLatin1String("vparam"));
    QScriptValue fnRes = fnObj.call(QScriptValue(), svlArgs);

    QString sResult = fnRes.toString();
    if (sResult.isEmpty()) {
        qDebug() << tr("Script for param '%1' returns NULL value string: %2")
                .arg(m_sName).arg(sFunction);
        return false;
    }

    qDebug() << sResult.toInt();

    return true;
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Алексей1153
  опции профиля:
сообщение 6.9.2010, 22:21
Сообщение #2


фрилансер
******

Группа: Участник
Сообщений: 2941
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

Спасибо сказали: 215 раз(а)




Репутация:   34  


igor_bogomolov, как "быстрый костыль" можно попробовать засунуть сиё в отдельный процесс (если логика приложения позволяет).

А ещё - может быть, есть какой-нибудь метод для очистки памяти именно в объекте scriptEngine - его вызывать периодически.

В конце концов, как костыль сойдёт, наверное, периодическое пересоздание объекта scriptEngine через new (со всеми синхронизациями, естественно, если это нужно)

По крайней мере, это всё можно попробовать для убедиться, что дело именно в этом месте

Сообщение отредактировал Алексей1153 - 6.9.2010, 22:21
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 28.1.2025, 15:30