Buscar

Gerenciamento de Memória do iOS.zip

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Apresentacao iOS.odp
Sistemas Operacionais
•Gereciamento de memória iOS.
• Adriano Castro Carvalho - Cpd: 58532
• Dayron José Gomes Rodrigues – Cpd: 62164
• Hugo Luís de Carvalho – Cpd: 889374
• Igor Diniz Souza - Cpd: 66224
• Nataly Rodrigues – Cpd: 877876
• Ramont Campos Almones Junior - Cpd: 57340
Objective – C
● Derivada da linguagem de programação C, foi 
criada e desenvolvida pela Apple, para criação 
de seu ecossistema.
O que é iOS?
● É o sistema operecional móvel, desenvolvido e 
distribuido pela Apple, que está presente 
exclusivamente nos seus aparelhos.
● O iOS vem instalado em todos aparelhos 
móveis da Apple, sua atualizações são 
gratuitas e podem ser feita OTA(*over the air).
Cocoa
● A Apple fornece suporte completo a 
desenvolvedores com diversas ferramentas 
que trabalham juntas para tornar o processo 
de implementação mais simples. 
● O desenvolvimento voltado a iOS é baseado 
na linguagem de programação Objective-C e 
no framework Cocoa Touch.
Watchdog
● Ferramenta que é acionada quando o 
processo entra em background.
● É uma boa idéia para inspecionar 
manualmente árvore de diretórios do iOS 
Simulator para obter uma melhor sensação 
para a estrutura do iOS e suas aplicações e 
para pegar a atividade de aplicativos que você 
poderia perder. Uma maneira fácil de 
automatizar isso é usar o módulo Python cão 
de guarda. "Watchdog irá usar o kqueue ou 
FSEvents API para monitorar árvores de 
diretório para a atividade de arquivo e eventos 
pode log ou tomar ações específicas quando 
esses eventos ocorrem. 
Estado de memória
MMR x ARC
•1 – O MMR - “Manual Reter-Release”, onde o 
usuário mantém o controle de objetos que o mesmo 
possui na memória. Implementado utilizando um 
modelo, conhecido como a contagem de referência, 
que a base de classe NSObject fornece em conjunto 
com o ambiente de execução.
•2 - Em um contador automático de referência 
(Automatic Reference Countign, ou ARC), o sistema 
usa o mesmo sistema de contador de referência que 
o MRR, mas insere as chamadas de métodos 
gerenciamento de memórias apropriadas para o 
usuário em tempo de compilação.
Ciclo de vida
● O sistema operacional se mostra mais eficaz 
quando comparado a outras plataformas, por 
não possir um coletor de lixo, em vez disso 
trata os objetos de maneira referenciada, ou 
seja ao fim da execução de um objeto esse 
espaço na memoria fica disponivel (clean).
iOS.odt
UNIVERSIDADE CEUMA
Curso de Graduação em Sistema de Informação
Adriano Castro Carvalho - Cpd: 58532
Dayron José Gomes Rodrigues – Cpd: 62164
Hugo Luís de Carvalho - Cpd: 889374
Igor Diniz Souza - Cpd: 66224
Nataly Rodrigues – Cpd: 877876
Ramont Campos Almones Junior - Cpd: 57340 
Gerenciamento de Memória do iOS
São Luís
2016
Adriano Castro Carvalho - Cpd: 58532
Dayron José Gomes Rodrigues – Cpd: 62164
Hugo Luís de Carvalho - Cpd:889374
Igor Diniz Souza - Cpd: 66224
Nataly Rodrigues – Cpd: 877876
Ramont Campos Almones Junior - Cpd: 57340
Gerenciamento de Memória do iOS
Trabalho apresentado ao Curso
Graduação em Sistema de 
Informação da Universidade Ceuma
Orientador: Msc. Eduardo Freire
São Luís
2016
Sumário
Introdução……………………………………………………………………………...……4
Elementos Textuais………………………………………………………………..……....5
Bibliografia…………………………………………………………………………………..8
Referências……………………………………………………………………………...…..9
Introdução
O gerenciamento de memória de um determinado aplicativo no iOS, é o processo de
alocação de memória durante a execução do seu programa, utilizando-o e em seguida liberando quando terminado. Um código bem escrito/compilado usa o mínimo de memória possível. Na linguagem Objective C, o programa pode também ser visto como uma forma de distribuir a propriedade de recursos de memória limitados entre pedaços de dados e de códigos.
Embora o gerenciamento de memória é normalmente considerado ao nível de um objeto individual, seu objetivo é realmente para gerenciar gráficos de determinados objetos. Todavia, o usuário tem que ter certeza de que o mesmo não tem mais objetos na memória do que precisa(necessita).
../Art/memory_management_2x.png
						Figura 1.
Caso a memória disponível não seja suficiente para a execução do sistema e das aplicações em execução, o sistema operacional busca por recursos já não utilizados e tenta recuperá-los. Caso estes não sejam suficientes, ocorre uma varredura nas aplicações em segundo plano e aquelas que ocupam mais recursos e não são utilizadas pelo usuário há mais tempo são finalizadas. Este processo se repete até que a quantidade necessária de memória seja alcançada.
A memória total dos dispositivos é dividida de uma forma que permita ao sistema agilizar o carregamento de novas aplicações e restaurar a execução de uma aplicação em segundo plano de uma maneira otimizada. Para isto, são criadas algumas áreas em memória que funcionam como um link lógico entre a memória física e o código carregado. Vejamos a seguir as principais áreas de memória (ver Figura 2).
Figura 2.
Free:
Memória que nunca foi usada por nenhum app.
Clean:
Memória que já foi usada e que está disponivel para uso.	
Quando alguma aplicação ou serviço requisita mais memória do que está disponível no momento, estes recursos são disponibilizados novamente para uso.
Dirty:
Espaço de memória que está em uso.
Embora a política de base seja simples, existem algumas medidas práticas que o usuário pode tomar para tornar mais fácil a gestão/controle da memória, para ajudar a garantir que o programa permaneça confiável e robusto ao mesmo tempo em que são minimizados os requisitos de seus recursos.
Todavia, o usuário tem que ter certeza de que o mesmo não tem mais objetos na memória além do que realmente precisa.
Continuando o assunto, é relevante citar que o Objective-C fornece três métodos de gerenciamento de memória de aplicativo.
1 - Ao decorrer do texto, iremos descrever o método conhecido como “Manual Reter-Release” ou MRR, onde o usuário pode explicitamente gerenciar a memória, mantendo o controle de objetos que o mesmo possui. Isto é implementado utilizando um modelo, conhecido como a contagem de referência, que a base de classe NSObject fornece em conjunto com o ambiente de execução.
2 - Em um contador automático de referência (Automatic Reference Countign, ou ARC), o sistema usa o mesmo sistema de contador de referência que o MRR, mas insere as chamadas de métodos gerenciamento de memórias apropriadas para o usuário em tempo de compilação.
3 – No coletor de lixos, o sistema automaticamente acompanha que objetos pertencem as quais outros objetos. Isso, então, automaticamente livra (ou coleta o lixo) os objetos que não estão referenciados. Ele usa um mecanismo diferente daquele empregado no MRR ou ARC e é apenas suportado no ambiente de execução do OSX, não no iOS.
Cocoa
A Apple fornece suporte completo a desenvolvedores com diversas ferramentas que trabalham juntas para tornar o processo de implementação mais simples. 
O desenvolvimento voltado a iOS é baseado na linguagem de programação Objective-C e no framework Cocoa Touch.
Cocoa Touch contém uma biblioteca de APIs, objetos e runtimes
que herdam a camada de desenvolvimento do sistema operacional. 
		Ele contém funções específicas para iOS como multitouch, views, gps, acelerômetro, etc.
		A sua maior parte é implementada em Objective-C. 
		Foi projetado em cima do modelo Model-View-Controller (MVC), portanto os aplicativos desenvolvidos devem seguir o mesmo modelo.
		Consiste, principalmente, nos frameworks Foundation e UIKit.
Se um usuário pensa em escrever um código para o iOS, o mesmo deve usar o gerenciamento de memória explícita, além disso, estas técnicas de gerenciamento de memória devem ser consideradas ao se escrever bibliotecas de rotinas, plug-ins, ou código compartilhado tanto em processos coletores de lixo como processos não coletores de lixo.
Boas práticas para prevenção de problemas de memórias relacionadas:
Existem dois tipos principais de problemas ou que resultam num gerenciamento incorreto de memória, são esses:
1 – Liberação ou substituição de dados que ainda estão em uso. Isso faz com que a decomposição de memória, normalmente, resulte em falha do aplicativo, ou ainda pior, que os dados do usuário sejam corrompidos.
2 – A não liberação dos dados que estão em desuso faz com que ocorram vazamentos de memória. Um vazamento é onde a memória alocada não é liberada, mesmo que ela não torne a ser utilizada novamente. Vazamentos que fazem com que o aplicativo use quantidades cada vez maiores de memória, que pode resultar num péssimo desempenho do sistema operacional.
Pensando em gerenciamento de memória a partir da perspectiva de contagem de referência, que no entanto, é frequentemente contraditório, porque o usuário tende a considerar o gerenciamento de memória em termos de detalhes de implementação, em vez de em termos de seus objetivos reais. Logo, o usuário deve pensar em gerenciamento de memória a partir da perspectiva da propriedade de objeto e gráficos de objetos.
Conclusão
Construir uma aplicação que execute fluidamente é um processo de início, meio e fim. Não basta nos preocuparmos com as funcionalidades, interface e usabilidade se a engrenagem principal da aplicação não funciona como deveria.
A performance de uma aplicação vai além da velocidade de execução, ela abrange o eficiente uso dos recursos do sistema e uma experiência de navegação agradável para os usuários. Para tanto, é necessário atenção para os problemas que encontramos no decorrer do desenvolvimento, pois estes, se deixados para o final, podem acarretar em mudanças drásticas na estrutura, o que significa um tempo precioso perdido.
Conclusão
Construir uma aplicação que execute fluidamente é um processo de início, meio e fim. Não basta nos preocuparmos com as funcionalidades, interface e usabilidade se a engrenagem principal da aplicação não funciona como deveria.
A performance de uma aplicação vai além da velocidade de execução, ela abrange o eficiente uso dos recursos do sistema e uma experiência de navegação agradável para os usuários. Para tanto, é necessário atenção para os problemas que encontramos no decorrer do desenvolvimento, pois estes, se deixados para o final, podem acarretar em mudanças drásticas na estrutura, o que significa um tempo precioso perdido.
Referências
Performance em aplicações iOS - Revista Mobile Magazine 45
<http://www.devmedia.com.br/performance-em-aplicacoes-ios-revista-mobile-magazine-45/26577> acessado em 30/05/2016.
Memory Usage Performance Guidelines
<https://developer.apple.com/library/ios/#documentation/performance/conceptual/managingmemory> acessado em: 30/05/2016.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais