Domanda

Sto eseguendo alcune ottimizzazioni delle prestazioni sulla mia applicazione e vorrei conoscere un buon modo per misurare le dimensioni dell'oggetto che sto inviando tramite RMI.

L'obiettivo è rendere il mio oggetto più snello.

È stato utile?

Soluzione

il modo più semplice per farlo è inserire un codice di prova che scriva l'oggetto in un file. quindi, guarda le dimensioni del file.

oppure, se non vuoi scrivere su disco (e i tuoi oggetti non stanno per scaricare la memoria):

ByteArrayOutputStream bout = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(bout);
oos.writeObject(theObjectIWantTheSizeOf);
oos.close();
System.out.println("The object size is: " + bout.toByteArray().length:

Altri suggerimenti

Poiché il tuo oggetto è già serializzabile, puoi utilizzare il metodo size () su ObjectOutputStream per farlo.

Devi prima verificare quale protocollo RMI stai usando. Se stai usando EJB 3 potrebbe chiamare CORBA (RMI-IIOP). Se vuoi migliorare le prestazioni puoi usare l'RMI over - Zipping IOP ( ZIOP ) & # 8212; Una versione zippata di GIOP che riduce l'utilizzo della larghezza di banda. prova http://docs.jboss.org/jbossremoting/2.5.2. SP2 / html_single /

  

Questo non è abbastanza: la classe può essere inviata così come la forma serializzata della sua istanza.

La classe deve essere inviata una sola volta e avrà le dimensioni su disco. Stai inviando l'oggetto solo una volta o più volte? Se quest'ultimo la dimensione della classe non dovrebbe essere importante.

Qualche mese fa, ho trovato questo articolo Contatore memoria strumentazione presso < a href = "http://www.javaspecialists.eu/" rel = "nofollow noreferrer"> Javaspecialist , sul calcolo dell'utilizzo della memoria degli oggetti Java. Forse potrebbe esserti utile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top