जब मैं स्क्रिप्ट सेवा रन अनुरोध पर निष्पादित करता हूं, तो इसमें कुछ स्मृति होती है और इसे रिलीज़ करने में विफल रहता है। रास्पबेरी पाई पर मोनोडेवलप पर चलकर इसका परीक्षण करना एक खतरनाक दर से बढ़ती स्मृति को दर्शाता है, और अंततः कार्यक्रम को क्रैश कर देगा। 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;
}
0
ebswift 31 मई 2019, 09:06

1 उत्तर

सबसे बढ़िया उत्तर

मैंने इसे हल किया, मोनो पूर्वावलोकन v6.0.0.277 को स्थापित करने से यह समस्या हल हो गई है, जीसी को मैन्युअल रूप से कॉल किए बिना मेमोरी अब सही ढंग से मुक्त हो गई है। कलेक्ट ()।

संबंधित मुद्दा जिसके कारण समाधान हुआ

0
ebswift 6 जून 2019, 03:31