Falso de memória?

3

Muitos dos meus aplicativos parecem não conseguir alocar memória. Isso varia de botões / barras de ferramentas ausentes no Explorer, outros aplicativos que não estão sendo iniciados, etc. O WinSCP, na verdade, fornece a mensagem de erro mais detalhada:

Error reading ListingCommandEdit->Items.Strings: System Error. Code: 8. Not enough storage is available to process this command.

O último texto é o texto de erro genérico para o erro do sistema ERROR_NOT_ENOUGH_MEMORY . Ora aqui está o problema: eu tenho muita memória.

Popping up Process Explorer revela 650 MB de RAM livre e outros 200 MB em cache. O arquivo de paginação tem outro 1,5 GB de acordo com o Process Explorer. O disco que contém o arquivo de paginação (C :) tem 137 GB de espaço livre.

Meu próximo pensamento foi tratado: talvez haja um limite aí? Eu tenho 30k deles, novamente, de acordo com PE, mas um aplicativo de teste rápido diz que eu posso alocar pelo menos mais 30k.

Então ... exatamente do que estou saindo? Sim, há muita coisa em execução, mas se eu tiver os recursos disponíveis para mais, não espero ver erros.

    
por Thanatos 01.07.2010 / 18:48

2 respostas

3

Aparentemente, o Windows tem algo chamado "Desktop Heap", que é por padrão 3 MiB. Informações sobre coisas como HWND s (janelas, botões, texto, caixas de edição, caixas de seleção, botões de opção, o nome dele) são armazenadas aqui - se você esgotar isso, não poderá criar mais o Windows e, portanto, pare de correr.

Este é um limite definido - nada de útil como expandir a pilha acontece. Felizmente, é reconfigurável, ao custo de uma reinicialização. É um ajuste de registro para HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Gerenciador de sessão \ SubSystems \ Windows.

Se você precisa saber se é isso que está afetando você, obtenha a ferramenta dheapmon da Microsoft, disponível aqui:

link

Um artigo melhor sobre como executá-lo:

link

Por fim, como ajustar essa chave de registro para que as coisas funcionem:

link

    
por 04.08.2010 / 17:07
1

Você realizou um teste de memória? memtest é um desses serviços.

Pode ser que você esteja recebendo erros que não estão aparecendo quando você procura por espaço livre. O aplicativo poderia relatá-los melhor, mas eles podem não ser distinguíveis para o código.

Ele pedia bytes X e, se não obtivesse a quantidade necessária, assumiria que não havia o suficiente, em vez de haver um problema com a memória.

    
por 01.07.2010 / 18:55