我把函数分为两段发  虚拟内存就是在足步增长.
是不是我的代码有问题我知道 用SetProcessWorkingSetSize 可以减少内存使用,但是如何减少虚拟内存呢Private Sub Manager1_Trap()    Dim Node As Node
    
    Dim Variable As SnmpVariable
    
    Dim TNode As Node
    
    Dim TNodeText
    
   ' Dim PNode As Node
    
   ' Dim Value As String
    
    On Error Resume Next
    
    Set Node = tvwAgents.Nodes.Item(Manager1.AgentName)
    
    If Err.Number = 35601 Then
    
        Set Node = tvwAgents.Nodes.Add(LoadResString(102), tvwChild, Manager1.AgentName, Manager1.AgentName, LoadResString(104))
        
         Node.Tag = LoadResString(104)
               
         AddProp Node, LoadResString(130), LoadResString(131)
       
         AddProp Node, LoadResString(132), LoadResString(133)
       
         AddProp Node, LoadResString(134), LoadResString(135)
        
         AddProp Node, LoadResString(136), LoadResString(137)
        
         AddProp Node, LoadResString(138), LoadResString(139)
        
        Me.mnuRefresh.Enabled = True
 
    Else
 
        If Node.Tag = LoadResString(140) Then
 
             Node.Text = Manager1.AgentName
             
             Node.Tag = LoadResString(102)
             
             AddProp Node, LoadResString(130), LoadResString(131)
            
             AddProp Node, LoadResString(132), LoadResString(133)
            
             AddProp Node, LoadResString(134), LoadResString(135)
            
             AddProp Node, LoadResString(136), LoadResString(137)
            
             AddProp Node, LoadResString(138), LoadResString(139)
             
        End If
        
    End If
    
    Err.Clear
    
    Node.Image = LoadResString(105)
    
    
    Set TNode = tvwAgents.Nodes.Item(Manager1.AgentName & LoadResString(109))
    
    If Err.Number = 35601 Then
    
        Set TNode = tvwAgents.Nodes.Add(Node, tvwChild, Manager1.AgentName & LoadResString(109), LoadResString(141), LoadResString(109))
        
        TNode.Tag = LoadResString(109)
        
    Else
    
        If TNode.Tag = LoadResString(109) Then
        
        
        TNodeText = Split(TNode.Text, Chr(32))
        
        TNode.Text = LoadResString(1417) & CLng(TNodeText(1)) + 1 & LoadResString(1418)
        
        End If    End If
    
    Dim Sql As String   
    Dim connI As Integer
    
   
    
    Dim bConnection As Boolean
    
    Dim S As String * 2
    
    Dim Bytes2() As Byte
    
    
    
    Dim str5 As String
    
    Dim i2 As Integer
        
        S = ""
        
        GetPrivateProfileString LoadResString(115), LoadResString(117), "", S, 2, App.Path & LoadResString(101)
        
        bConnection = S
        
        If bConnection = True Then
            
            For Each Variable In Manager1.Message.Variables
                
                If Variable.Oid <> LoadResString(1405) Then
                
                    WriteTarp Time & Chr(32) & Chr(32) & _
                      Variable.Oid & Chr(13) & Chr(10) & _
                              Time & Chr(32) & Chr(32) & _
                     Variable.Name & Chr(58) & Chr(32) & _
                    Variable.Value & Chr(13) & Chr(10)
                
                Else
                                    
                    Bytes2 = Variable.ValueEx
                
                    str5 = ""
                
                    For i2 = 0 To UBound(Bytes2) - 1
                    
                        str5 = str5 & Hex(Bytes2(i2)) & Chr(32)
                    
                    Next
                    
                    WriteTarp Time & Chr(32) & Chr(32) & _
                      Variable.Oid & Chr(13) & Chr(10) & _
                              Time & Chr(32) & Chr(32) & _
                     Variable.Name & Chr(58) & Chr(32) & _
                              str5
                    
                    Erase Bytes2
                    
                    i2 = 0&
                    
                    str5 = ""
                    
                End If
            
            Next
            
            WriteTarp String(90, "_")
            
        End If
        
        
        Dim str7 As String
        Dim UpdateAL_i As Integer
        Dim YYYY, MM1, MM2, DD, SS, HH As String
            
        If Manager1.Message.Variables(4).Oid = LoadResString(1402) Then
        
        Dim UpdateAL_2
        
                For UpdateAL_i = 0 To 500
                
                DoEvents
                
                If Trim(UpdateAL(UpdateAL_i, 0)) = "" Then Exit For
                
                    If CLng(UpdateAL(UpdateAL_i, 0)) = CLng(Manager1.Message.Variables(4).Value) Then
                        
                        str7 = Manager1.Message.Variables(9).Value
                        
                      '  For i2 = 1300 To 1306
                         
                      '      str7 = Replace(str7, LoadResString(i2), "")
                        
                      '  Next
                        
                        str7 = Trim(str7)
                        
                        If InStr(1, UpdateAL(UpdateAL_i, 1), ",") <> 0 Then
                        
                            UpdateAL_2 = Replace(UpdateAL(UpdateAL_i, 1), ",", "','")
                        
                        Else
                        
                        UpdateAL_2 = UpdateAL(UpdateAL_i, 1)
                        
                        End If
                        
                        Err.Clear
                        
                        On Error GoTo OnError
                        
                        
                        Dim Bytes3() As Byte
                        
                        Bytes3 = Manager1.Message.Variables(7).ValueEx
                        
                        YYYY = Val("&H" & Hex(Bytes3(0)) & Hex(Bytes3(1)))
                        
                        MM1 = Val("&H" & Hex(Bytes3(2)))
                        
                        DD = Val("&H" & Hex(Bytes3(3)))
                        
                        HH = Val("&H" & Hex(Bytes3(4)))
                        
                        MM2 = Val("&H" & Hex(Bytes3(5)))
                        
                        SS = Val("&H" & Hex(Bytes3(6)))
                        
                        str5 = YYYY & "/" & MM1 & "/" & DD & " " & HH & ":" & MM2 & ":" & SS
                        
                        Sql = "Update al_a_trap_info Set CLEANSTATE=0 , CLEANTIME=to_date('" & _
                               str5 & "','" & LoadResString(1425) & "')  Where " & _
                              "ALARMID in  ('" & UpdateAL_2 & "') and  CLEANSTATE=1  and ALARMRESOURCEID='" & _
                              Manager1.Message.Variables(8).Value & _
                              "' and  ALARMSOURCEOAMHOST='" & _
                              str7 & "' "
                              
                        conn.Execute Sql
                        
                        GoTo TrapEnd
                        
                        Exit For
                    
                    End If
                
                Next
            
            
            
            End If

解决方案 »

  1.   

    Sql = "Insert into al_a_trap_info (id ,CLEANSTATE, " & LoadResString(1001) & "," & LoadResString(1002) & "," & LoadResString(1003) & "," & LoadResString(1004) & "," & LoadResString(1005) & "," & LoadResString(1006) & "," & LoadResString(1007) & "," & LoadResString(1008) & "," & LoadResString(1009) & "," & LoadResString(1010) & "," & LoadResString(1011) & "," & LoadResString(1012) & "," & LoadResString(1013) & ") Values ( '" & CreateGUID & "','1'"
                    
                    Err.Clear
                    
                    connI = 1
                    
                    For Each Variable In Manager1.Message.Variables
                        
                        connI = connI + 1
                        
                        Dim i As Integer
                        
                        
                        
                        For i = 1 To 13
                        
                            If Variable.Oid = LoadResString(1426) & i & ".0" Then
                                Select Case i
                                
                                Case 3
                                
                                    Sql = Sql & ",'" & LoadResString("120" & Variable.Value) & "'"
                                
                                Case 4
                                    
                                    Sql = Sql & ",'" & LoadResString("111" & Variable.Value) & "'"
                                
                                Case 5
                                    
                                    Dim Bytes() As Byte
                                    
                                    Bytes = Variable.ValueEx
                                    
                                    YYYY = Val("&H" & Hex(Bytes(0)) & Hex(Bytes(1)))
                                    
                                    MM1 = Val("&H" & Hex(Bytes(2)))
                                    
                                    DD = Val("&H" & Hex(Bytes(3)))
                                    
                                    HH = Val("&H" & Hex(Bytes(4)))
                                    
                                    MM2 = Val("&H" & Hex(Bytes(5)))
                                    
                                    SS = Val("&H" & Hex(Bytes(6)))
                                    
                                    str5 = YYYY & "/" & MM1 & "/" & DD & " " & HH & ":" & MM2 & ":" & SS
                                    
                                    Sql = Sql & ", to_date('" & str5 & "','" & LoadResString(1425) & "')"
                                    
                                Case 7
                                    
                                    str7 = Variable.Value
                                    
                                    'For i2 = 1300 To 1306
                                     
                                    ' str7 = Replace(str7, LoadResString(i2), "")
                                    
                                    'Next
                                    
                                    str7 = Trim(str7)
                                    
                                    Sql = Sql & ",'" & str7 & "'"
                                
                                Case Else
                                    
                                    Sql = Sql & ",'" & Variable.Value & "'"
                                
                                End Select
                                    
                            End If
                            
                        Next
                    Next
                    
                Err.Clear
                
                On Error GoTo OnError
                
                If connI > 13 Then
                
                    Sql = Sql & ")"
                    
                    conn.Execute Sql
                    
                    'If bConnection = True Then
                      '  FrmDebug.Text1 = FrmDebug.Text1 & Manager1.Message.Variables(4).Value & " 告警入库 " & str5 & Chr(13) & Chr(10)
                    'End If
                    ' Else
                    'If bConnection = True Then
                      '  FrmDebug.Text1 = FrmDebug.Text1 & str7 & " 正常运行 " & str5 & Chr(13) & Chr(10)
                    'End If
                
                End IfTrapEnd:
        
        Sql = ""
        
        YYYY = ""
        
        MM1 = ""
        
        MM2 = ""
        
        DD = ""
        
        SS = ""
        
        HH = ""
        
        str7 = ""
        
        UpdateAL_i = 0&
        
        connI = 0&
        
        i = 0&
        
        TNodeText = ""
        
        UpdateAL_2 = 0&
        
        Erase Bytes
        Erase Bytes3
        
        Set TNode = Nothing
        
        Set Node = Nothing
        
        Set Variable = Nothing
        
       
        
    Exit SubOnError:
            
            WriteTarp Sql & Err.DescriptionEnd Sub