2

2 つの非常に単純な Web サービス メソッドがあります。json を使用して毎秒呼び出します。IIS でメモリ リークが発生します。w3wp プロセスは 1 秒あたり 300 ~ 400k を消費します。リークを止めるにはどうすればよいですか?

メソッドは次のとおりです。

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public List<StationStatus> GetAllStationsValues(string networkID ,string stationIDs)
{
    List<StationStatus> stationStats = new List<StationStatus>();
    foreach (string stationID in stationIDs.Split(','))
    {
        if (Application[networkID + "-" + stationID] != null)
        {
            string[] vals = (string[])Application[networkID + "-" + stationID];

            stationStats.Add(new StationStatus() { NetworkID = networkID, StationID = stationID, ComponentName = vals[0].Split(':')[0], LatestValue = vals[0].Split(':')[1], Status = "0" });////////
        }
    }

    return stationStats;
}

[WebMethod]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public string GetValue(string networkID, string stationID)
{
    int sec = DateTime.Now.Second;

    if (Application[networkID + "-" + stationID] == null)
    {
        return "";
    }

    string[] compValues = (string[])Application[networkID + "-" + stationID];


    string returnValue = "";

    foreach (string compValue in compValues)
    {
        returnValue += compValue + ",";
    }

    return returnValue.TrimEnd(',');
}
4

1 に答える 1

0

StringBuilderクラスを使用して、returnValue文字列に追加してみてください。

于 2012-10-01T18:59:30.200 に答える