Usuário com melhor resposta
Consumo de Memória

Pergunta
-
Prezados, bom dia.
Criei o código abaixo para realizar uma pesquisa e listar em um arquivo texto todos os arquivos que estão armazenados em um HD. Minha finalidade e listar diariamente os arquivos que possuo armazenado no servidor para fazer umas comparações.
O código funciona perfeitamente, contudo, notei que minha aplicação inicia com um consumo de memória em torno de 1 MB e quando termina está em torno de 300 MB (claro que ele listou mais de 500.000 arquivos).
Existe algum código que eu possa acrescentar para que quando terminar de listar os arquivos ele "retorne" para o consumo de memória inicial? Caso possua poderiam me mostrar?
Desde já agradeço a atenção.
Imports System.IO
Dim PastaServidor As String = txtDiretorio.Text
'Verifica se o diretorio digitado existe.
If Not System.IO.Directory.Exists(PastaServidor) Then
lblMensagem.Text = "O diretório especificado não pode ser encontrado."
PastaServidor = Nothing
Exit Sub
End If
'Verifica se o arquivo LogListaArquivo existe.
If IO.File.Exists("C:\LogListaArquivo-" & Format(DateTime.Now, "ddMMyyyy") & ".txt") = True Then IO.File.Delete("C:\LogListaArquivo-" & Format(DateTime.Now, "ddMMyyyy") & ".txt")
'Cria o arquivo LogListaArquivo
Dim LogListaArquivo = New IO.StreamWriter("C:\LogListaArquivo-" & Format(DateTime.Now, "ddMMyyyy") & ".txt", False, System.Text.Encoding.Default)
'---------------------------------------------
'Verifica os arquivos existentes na pasta Raiz
'---------------------------------------------
Dim DirDiretorio As DirectoryInfo = New DirectoryInfo(PastaServidor)
Dim oFileInfoCollection() As FileInfo
Dim oFileInfo As FileInfo
Dim i As Integer
'Preenche o FileCollection com um Array de objetos FileInfo
oFileInfoCollection = DirDiretorio.GetFiles("*.*")
'Podemos utilizar os objetos da coleção oFileCollection para preencher um ListBox por exemplo
For i = 0 To oFileInfoCollection.Length() - 1
oFileInfo = oFileInfoCollection.GetValue(i)
'Gravando a informacao no arquivo texto. (log ListaArquivo declarado como variável Public
LogListaArquivo.WriteLine(oFileInfo.Name)
Next
DirDiretorio = Nothing
oFileInfoCollection = Nothing
oFileInfo = Nothing
i = Nothing
'---------------------------------------------
'Verifica os arquivos existentes na Sub-pasta
'---------------------------------------------
Dim strRootPath As String = PastaServidor
Dim filePattern As String = "*.*"
Try
Dim FullDir() As String = IO.Directory.GetDirectories(strRootPath)
For Each Dir As String In FullDir
Try
Dim FullFiles() As String = IO.Directory.GetFiles(Dir, filePattern, IO.SearchOption.AllDirectories)
For Each File As String In FullFiles
Try
'Gravando a informacao no arquivo texto. (log ListaArquivo declarado como variável Public
LogListaArquivo.WriteLine(File)
Catch ex As Exception
End Try
Next
FullFiles = Nothing
Catch ex As Exception
End Try
Next
FullDir = Nothing
Catch ex As Exception
MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End Try
strRootPath = Nothing
filePattern = Nothing
LogListaArquivo.Close()
LogListaArquivo = Nothing
End Sub
Carlos Falcao
Respostas
-
Olá,
Sempre que for postar código aqui no fórum use a ferramenta Inserir bloco de código.
Para melhorar um pouco o consumo de memória adicione o código abaixo no final do seu método:
GC.Collect() GC.WaitForPendingFinalizers()
Herbert Lausmann
- Marcado como Resposta Carlos Falcao quarta-feira, 19 de fevereiro de 2014 14:13
Todas as Respostas
-
Olá,
Sempre que for postar código aqui no fórum use a ferramenta Inserir bloco de código.
Para melhorar um pouco o consumo de memória adicione o código abaixo no final do seu método:
GC.Collect() GC.WaitForPendingFinalizers()
Herbert Lausmann
- Marcado como Resposta Carlos Falcao quarta-feira, 19 de fevereiro de 2014 14:13
-