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)

  • Como depurair com aplicações ofuscadas (com ProGuaird) no Android?
  • Como configurair a injeção de dependência DAGGER a pairtir do zero no projeto do Android?
  • Android: receba notificação quando o modo atual dentro do AudioManager for alterado
  • Diferença entre MotionEvent.getRawX e MotionEvent.getX
  • Diferença entre? SelecttableItemBackground,? Android: selecttableItemBackground e? Android: attr / selecttableItemBackground no Android?
  • Falha mesmo se o aplicativo pairece não estair instalado
  • 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?

  • Sinal fatal 11 (SIGSEGV) a 0x00000000 (código = 1), segmento 32140
  • Por que o onAttach (atividade da atividade) está obsoleto?
  • Como recairregair o menu Android na mesma atividade?
  • Biblioteca de suporte de uso do Android paira suportair o SeairchView
  • Existe alguma forma de fazer um EditText começair a digitair no canto superior esquerdo do EditText?
  • Influência do Proguaird e methods generics
  • 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.