通过调用ServiceReference(C#)实现UWP内存泄漏

时间:2016-08-31 11:19:45

标签: c# visual-studio wcf memory-leaks garbage-collection

我有一个问题:

  1. 我创建了一个默认的ServiceReference

    [OperationContract]
    string GetData(int value);
    

    实现:

    public string GetData(int value) { return string.Format("You entered: {0}", value); }

  2. 将ServiceReference添加到新的UWP项目中 (Add Reference Pic.

  3. 在UWP主构造函数中我打电话:

    void Test() { ServiceReference.Service1Client h = new ServiceReference.Service1Client(); for (int i = 0; i < 10000; i++) { var u = h.GetDataAsync(5); } }

    或者:

    async void Test() { ServiceReference.Service1Client h = new ServiceReference.Service1Client(); for (int i = 0; i < 10000; i++) { var u = await h.GetDataAsync(5); } }

  4. 问题: WCF服务工作。 UWP-App有效。但过程记忆永远不会减少。 Memory Pic. 垃圾收集器什么都不做。

    我打电话的时候:

    GC.Collect(2); GC.WaitForPendingFinalizers();

    它改变了#34;没什么&#34; (不会上升太多)。但过程记忆永远不会减少。

    在内存不足的设备上,当内存已满时App会崩溃。(raspberry pi 2/3)。

    我做错了什么。

  5. Raspberry pi 2/3场景:应用程序在每日循环中调用ServiceReference。该应用程序运行全年。有时应用程序会崩溃,因为内存已满。

1 个答案:

答案 0 :(得分:0)

(1)set&#34; ServiceReference.Service1Client h = new ServiceReference.Service1Client();&#34; 到全局参数

或 (2)h.Dispose()最后