Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

227
Visualizações
Límites de asignación de memoria del montón de Java

He escrito la siguiente prueba para verificar la memoria de almacenamiento dinámico máxima disponible:

 import java.util.*; public class Memory { public static void main(String[] args) { long maxMB = Runtime.getRuntime().maxMemory() / 1048576L; System.out.println("Maximum memory is " + maxMB + " MB."); ArrayList<byte[]> allocated = new ArrayList<>(); try { while (true) allocated.add(new byte[1024*1024]); } catch (OutOfMemoryError e) { System.out.println("allocated " + allocated.size() + " MB before running out of memory."); } } }

Sin embargo, cuando pruebo esto, parece que solo se puede asignar la mitad de la memoria "disponible":

 $ java -Xmx512m Memory Maximum memory is 512 MB. allocated 255 MB before running out of memory. $ java -Xmx1024m Memory Maximum memory is 1024 MB. allocated 511 MB before running out of memory.

¿Alguien sabe por qué sería así?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que lo que sucede es que el administrador de memoria intenta alinear los fragmentos en el siguiente límite de 1 MB disponible. Pero como las matrices de 1 MB en realidad ocupan un poco más de 1 MB (para almacenar la longitud y otras cosas), se organizan con una brecha de casi 1 MB entre ellas. Al reducir el tamaño del bloque en 16 bytes, de repente usan toda la memoria nuevamente.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda