Sto cercando di capire il modello di memoria JVM. In particolare, vorrei capire se sarebbe possibile avere librerie di serializzazione a zero (de), come Cap'n Proto o FlatBuffers . In particolare, queste due librerie hanno un supporto parziale per Java, ma non mi è del tutto chiaro se l'implementazione è zero-copy.
Supponiamo di voler deserializzare qualcosa e che questa regione sarà di sola lettura. Inizierò con una serie di byte contigui, almeno dal punto di vista JVM, anche se capisco che potrebbero non essere contigui a causa del gestore di memoria virtuale (e possibilmente della JVM?). Questo array è da qualche parte nell'heap JVM.
Quello che mi piacerebbe fare è produrre un'istanza di una data classe, in modo tale che l'accesso a un campo di questa classe significhi semplicemente dereferenziare un puntatore a questa matrice, senza dover copiare le singole parti di questa matrice da qualche altra parte.
Questo è fattibile sulla JVM? In caso contrario, quale sarebbe l'optimum? Posso farlo con una singola copia indipendentemente dal layout della classe?