Atualização de 2015
Em 2012, isso não era possível, se você quisesse oferecer suporte a todos os principais navegadores em uso. Infelizmente, no momento, esse ainda é um recurso exclusivo do Chrome (uma extensão não padrão do window.performance
).
window.performance.memory
Suporte do navegador: Chrome 6+
Resposta de 2012
Existe uma maneira de descobrir quanta memória está sendo usada por uma página da web ou pelo meu aplicativo jquery? Estou procurando uma solução de tempo de execução (não apenas ferramentas de desenvolvedor), para que meu aplicativo possa determinar ações com base no uso de memória no navegador do usuário.
A resposta simples, mas correta, é não . Nem todos os navegadores expõem esses dados para você. E acho que você deveria abandonar a ideia simplesmente porque a complexidade e imprecisão de uma solução "feita à mão" podem apresentar mais problemas do que resolver.
Contar os elementos DOM ou o tamanho do documento pode ser uma boa estimativa, mas pode ser bastante impreciso, pois não incluiria associação de eventos, dados (), plug-ins e outras estruturas de dados na memória.
Se você realmente deseja manter sua ideia, deve separar o conteúdo fixo do dinâmico.
O conteúdo fixo não depende das ações do usuário (memória usada por arquivos de script, plug-ins, etc.)
Todo o resto é considerado dinâmico e deve ser seu foco principal ao determinar seu limite.
Mas não há uma maneira fácil de resumi-los. Você pode implementar um sistema de rastreamento que reúna todas essas informações. Todas as operações devem chamar os métodos de rastreamento apropriados. por exemplo:
jQuery.data
Método de embrulhar ou substituir para informar o sistema de rastreamento sobre suas alocações de dados.
Enrole as manipulações html para que a adição ou remoção de conteúdo também seja rastreada ( innerHTML.length
é a melhor estimativa).
Se você mantiver grandes objetos na memória, eles também devem ser monitorados.
Quanto à associação de eventos, você deve usar a delegação de eventos e, em seguida, também pode ser considerado um fator um tanto fixo.
Outro aspecto que torna difícil estimar seus requisitos de memória corretamente é que navegadores diferentes podem alocar memória de maneira diferente (para objetos Javascript e elementos DOM).