No, semmai proprio il contrario! In Java gli array multi-dimensionali sono semplicemente "array di array": un oggetto array principale i cui elementi sono "reference" ad altri oggetti array, ecc... in base alle dimensioni.Originariamente inviato da Pierock
devo dedurre che 2 dimensioni "occupano" meno di una sola?
Quindi facendo new int[num][num] con num=16100 ci sono ben 16101 oggetti (gli array) presenti nel heap space! C'è un array principale che contiene 16100 reference ad altrettanti array che contengono ognuno una sequenza contigua di 16100 int.
Mentre con new int[num*num] c'è 1 solo array che contiene 259210000 int.
Se contiamo solo lo spazio per tutti gli int (tralasciamo un momento il fatto che nel primo caso ci sono più oggetti con dati intrinseci che occupano quindi di più del secondo caso) siamo intorno a circa 990 MByte di memoria.
Un po' tantino. Per default la JVM ha normalmente max 64 MByte o giù di lì per il heap. Quindi comunque in ogni caso devi aver impostato un heap space massimo molto più grande.
Quindi continua così .... setta un heap space massimo sensato per quello che devi fare e in base alla macchina che hai a disposizione.
Il concetto da usare è una matrice bidimensionale? Allora ovviamente int[][].Originariamente inviato da Pierock
quindi dovrei preferire questa struttura?
Lo spiega qui:Originariamente inviato da Pierock
perché se provo ad aumentare lo spazio della JVM non posso superare i 1024 mega? ... il mio pc dispone di 2giga di ram... ora, nn pretendo di utilizzarne 2048 ... però... che diamine!
e cmq questo problema rimane anche se uso un pc con 4giga di ram!
http://java.sun.com/docs/hotspot/Hot...#gc_heap_32bit