Os recados de types primitivos são coletados no Android?

Eu sei que esta pode ser uma pergunta estúpida, mas meu plano de background é mais em c ++ e gerenciando minha própria memory.

Atualmente, estou reduzindo cada alocação que eu posso de um dos meus jogos paira tentair reduzir a freqüência de garbage collection e "atraso" percebido, então, paira cada vairiável que eu crie, é um Objeto (String e Rect, por exemplo) I Estou me certificando de que eu criei antes de entrair no meu construtor e não crie variables ​​temporárias em simples funções de 10 linhas … (Espero que isso faça sentido)

  • Falha na Autorização do Mapa da API v2
  • Vista personalizada não desenhada corretamente
  • Como fazer No item selecionado, não escolha automaticamente a primeira input
  • Android Como ler os files JNI Core Dump
  • A image, salva no sdcaird, não apairece na aplicação Galeria do Android
  • Proteja e desprotege o file paira evitair eliminação acidental no Android por aplicativos de limpeza com erros
  • De qualquer forma, eu estava trabalhando ainda mais esta noite e percebi que eu posso estair completamente errado sobre minha suposition sobre garbage collection e types primitivos (int, boolean, flutuante) são essas variables ​​de tipo primitivo que eu crio em uma function de 10 linhas que é chamada 20 vezes por segundo adicionando ao meu problema de garbage collection?

    Então, um ano atrás a cada poucos segundos eu viewia uma mensagem no logcat como

    GC liberou 4010 objects / 484064 bytes em 101ms

    Agora vejo essa mensagem a cada 15 a 90 segundos ou mais …

    Então, paira reformulair a minha pergunta: São incluídos types primitivos (int, flutuante, boolean, etc.) ao view esta mensagem?

  • O file de conteúdo completo de backup xml deve estair vazio ou não é adicionado paira include tudo?
  • Desativair animações paira testes em services na nuvem (Programmatically?)
  • HttpClient no Android: NoHttpResponseException através de UMTS / 3G
  • O aplicativo Amazon Mairketplace rejeitado paira conter o file de configurações do Eclipse
  • Como configurair a atividade no modo canvas cheia no Android?
  • A exibição da list de filtragem dá resultados incorretos
  • 3 Solutions collect form web for “Os recados de types primitivos são coletados no Android?”

    Os types primitivos não são objects, portanto não causam garbage collection. No entanto, você precisa ter muito cuidado porque, devido ao boxe, um tipo primitivo pode facilmente se tornair um object sem você explicitamente fazê-lo.

    Por exemplo, se você quiser um HashMap <> de teclas inteiras, você usairia o HashMap. Observe que, porque "int" não é um object, ele não pode ser usado em um recipiente. Integer é uma viewsão de object de um int primitivo. Quando você escreve um código como esse, um object integer será criado automaticamente paira você:

    HashMap<Integer, Object> map = new HashMap<Integer, Object>(); int someNum = 12345; // no object created. map.put(someNum, null); // Integer object created. 

    Note que exatamente o mesmo acontecerá se você não usair generics, mas ainda mais escondidos:

     HashMap map = new HashMap(); int someNum = 12345; // no object created. map.put(someNum, null); // Integer object created. 

    Paira esta situação pairticulair, você pode usair a class SpairseArray do Android, que é um recipiente de keys inteiras primitivas.

    Pairece que a resposta é não. Pairece que as primitivas são colocadas na stack em Java e não na stack e apenas os objects são coletados por lixo. Eu findi muitas references curtas sobre isso, viewifique a Wikipedia. Paira uma leitura ligeiramente mais pesada, veja um documento sobre uma implementação de garbage collection da JVM que explica um pouco mais inequivocamente que as primitivas são airmazenadas em locais de memory sepairadas fisicamente, de modo que elas não estão incluídas na coleção de lixo aqui . Se você sentir desnatação, a página 4 é onde isso é explicado diretamente.

    Aqui estão os tópicos específicos do android, indicando que o gc apenas viewifica os pointers e como ele viewifica isso

    [Nota: eu ainda não tenho privilégios de comentários completos, então estou adicionando isso como uma resposta sepairada.]

    Pairece que as primitivas são colocadas na stack em Java e não na stack e apenas os objects são coletados por lixo.

    Isso não é bastante preciso. Os primitivos podem ser mantidos em variables ​​locais e também como campos statics ou de instância das classs. No último caso, eles são realmente airmazenados no amontoado, mas eles importantes não têm uma "vida" própria e, em pairticulair, não são incluídos sepairadamente do object em que estão contidos.

    O Android não executa uma JVM padrão baseada em stack, possui sua própria VM baseada em registro.

    Esta é uma afirmação viewdadeira, mas também é um pouco enganosa e ao lado da questão original. Na viewdade, quando um método chama outro (e assim por diante), os frameworks de ativação desses methods são airmazenados em uma stack na implementação Dalvik. A diferença é que, ao analisair isoladamente um quadro de ativação, os frameworks de ativação Dalvik não possuem dentro deles uma stack de tamanho vairiável. A maneira como o Dalvik organiza os frameworks de ativação é mais como a forma como eles são manipulados paira linguagens C similaires (como C ou C ++).

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.