Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Dubbio sull'allocazione della memoria

    Ho un dubbio. Dubbio che non dovrei avere ma ce l'ho
    Qual e' la differenza tra questo:
    Codice PHP:
    List<Object= new ArrayList<Object>();
    for (
    int i 0100i++) {
      
    Object o = new Object();
      
    l.add(o);

    e questo:

    Codice PHP:
    List<Object= new ArrayList<Object>();
    Object o null;
    for (
    int i 0100i++) {
      
    = new Object();
      
    l.add(o);

    In pratica, come viene allocata in maniera diversa la memoria se l'oggetto o lo dichiaro dentro o fuori dal for?
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  2. #2
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Non c'é assolutamente nessuna differenza che riguardi la memoria. Quello che ti allochi la memoria sia il new, non dove dichiari la variabile stessa.

    L'unica differenza sarebbe che, con la seconda versione tu possa accedere o anche fuori/dopo del for.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  3. #3
    Mi sono documentato un po', ed in effetti hai ragione. Anzi molti consigliano il primo modo (dichiarare le variabili dentro al loop) in modo da dare il minimo scope possibile. Qualcuno sostiene addirittura che in questo modo si ottiene un leggero incremento di prestazioni: su questo ho dei dubbi pero'...
    max

    Silence is better than bullshit.
    @mmarcon
    jHERE, Maps made easy

  4. #4
    Utente di HTML.it L'avatar di neroux
    Registrato dal
    Aug 2009
    Messaggi
    1,973
    Consiglierei anch'io il primo per la questione dello scope, però come scritto effittivamente non ci sarà una differenza - tranne lo scope . E poi non si può proprio sapere cosa stia faccendo il compiler anche con la seconda versione, c'è sempre la possibilità che la metta dentro il for per motivi di performance.

    www.sitemeer.com » Quando un sito pare irraggiungibile

    Se ti piace ci puoi trovare anche su Facebook

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da mxa
    Anzi molti consigliano il primo modo (dichiarare le variabili dentro al loop) in modo da dare il minimo scope possibile.
    Vero. Se non ci sono ragioni particolari, sempre meglio dichiarare una variabile nello scope più piccolo che è sufficiente per l'uso che se ne deve fare della variabile.

    Originariamente inviato da mxa
    Qualcuno sostiene addirittura che in questo modo si ottiene un leggero incremento di prestazioni: su questo ho dei dubbi pero'...
    A livello di istruzioni nel "bytecode" non c'è differenza. Il bytecode sarebbe lungo uguale e con le stesse istruzioni. Può cambiare semmai l'utilizzo delle variabili a livello di indici nello "stack frame".

    Prendi ognuno dei due codici che hai postato uno per volta, mettilo in una classe es. Prova dentro un main() poi compila con javac e poi "disassembla" con: javap -c Prova
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.