O profiler de memória permite analisar o consumo de memória de uma sessão, quais os objetos estão referenciados, quanto de memória eles está consumindo e quando foi criado. É uma importante ferramenta para identificar vazamentos de memória e otimizar seu uso.
Objetos utilizados pela API de profiler.
Projeto
É aonde todos os profilings são realizados. É criado um banco local IDO formado pela string NomeProjeto + _PROFILING.
Sessão
É aonde é realizado um conjunto de medições sobre uma mesma sessão Javascript.
Profiling
É a análise de um momento de uma sessão Javascript.
Geração
Todo objeto Javascript é associado a uma geração. A cada vez que o GC é executado, é iniciado uma nova geração. A geração que um objeto pertence é informada no número que precede o ":", no id do objeto.
Para um melhor uso do Profiler, habilite o Debugger do Javascript nas configurações do Manage.
Se nenhum projeto existir, ele é criado automaticamente.
profiler = new ngin.debug.MemoryProfiler("NomeProjeto");
Onde partialSid é o nũmero de sessão truncado, na forma como aparece no Manage.
sid = profiler.newSession(partialSid);
Para fazer outras medições sobre uma mesma sessão, você não deve usar newSession, e sim informar ao profiler para usar o id que ele retornou
profiler.setSession(sid)
Essa função demora alguns segundos, pois ele vai varrer toda a memória de uma sessão, e importar para o banco de dados.
o pid é o profilingId, um id associado ao último profiling.
pid = profiler.profile();
Listar profilings:
profiler.listProfilings();
Selecionar um profiling:
profiler.setDefaultProfiling(pid);
Ver os objetos alocados:
profiler.listObjects()
Ver objetos de uma determinada classe:
profiler.listObjects(className)
Ver quais gerações estão vivas:
profiler.getLivingGenerations();
Para ver a cadeia de referências para um determinado objeto:
profiler.getRefChain(oid);