Se desidero allocare un struct
in C,
#include<stdio.h>
typedef struct container {
int i;
} Container;
int main() {
Container *ptr_to_container;
ptr_to_container = (Container *) malloc(sizeof(Container));
ptr_to_container->i = 10;
printf("Container value: %d\n", ptr_to_container->i);
free(ptr_one);
return 0;
}
Devo chiamare esplicitamente malloc
e free
. Come fa una VM a fare questo?
Se creo un oggetto in Java,
public class Container {
public int i;
public static void main(String[] args) {
Container container = new Container();
container.i = 10;
System.out.println("Container value: " + container.i);
}
}
L'account Garbage Collectors per la liberazione, ma non l'allocazione. In che modo la JVM assegna la quantità di dati necessaria? Chiama malloc
o un'altra implementazione di gestione della memoria?
In che modo la JVM conosce la quantità di dati necessari? Fa aumentare la lunghezza di tutti i campi?