ScriptService выполняет едят память - PullRequest
0 голосов
/ 31 мая 2019

Когда я запускаю Execute по запросу запуска ScriptService, он занимает некоторое количество памяти и не может ее освободить. Тестирование этого при запуске на monodevelop на Raspberry Pi показывает, что память растет с пугающей скоростью, и в конечном итоге вылетает программа. GC.Collect был попыткой повторно потребовать эту память. Есть ли понимание того, что я делаю неправильно?

public MainWindow() : base(Gtk.WindowType.Toplevel)
{
    Build();

    while (true)
    {
        getDashRow();

        Thread.Sleep(1000);
        Console.WriteLine("Total available memory before collection: {0:N0}", System.GC.GetTotalMemory(false));

        System.GC.Collect();

        Console.WriteLine("Total available memory collection: {0:N0}", System.GC.GetTotalMemory(true));
    }
 }

 private int getDashRow()
 {
    ScriptsResource.RunRequest runreq;
    DriveService driveservice;
    ExecutionRequest exrequest;

    Console.WriteLine("getDashRow");
    int retval = 0;

    exrequest = new ExecutionRequest();
    exrequest.Function = "getMacRow";
    IList<object> parameters = new List<object>();
    parameters.Add(spreadsheetname);
    exrequest.Parameters = parameters;
    exrequest.DevMode = false;

    try
    {
        // run a Google Apps Script function on the online sheet to find number of rows (more efficient)
        runreq = scriptservice.Scripts.Run(exrequest, dashscriptid);

        // following line consumes the memory
        Operation op = runreq.Execute();

        retval = Convert.ToInt16(op.Response["result"]);
        parameters = null;
        exrequest = null;
        op = null;
    }
    catch (Exception ex)
    {
        Console.WriteLine("getDashRow: " + ex.Message);
    }

    return retval;
}

1 Ответ

0 голосов
/ 06 июня 2019

Я решил это, установка Mono Preview v6.0.0.277 решила эту проблему, память теперь правильно освобождена без ручного вызова GC.Collect ().

Проблема, связанная с решением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...