Number format
Last Updated: Sep 24 2018 16:40, Started by
piramyd
, Sep 07 2018 10:24
·
0
#37
Posted 23 September 2018 - 10:05
Bre ia uite aici:
public static void stocarePrimitive(int n ) { char[] a = new char[n]; for (int i = 0 ; i< n; i++){ a[i] = 'a'; } } public static void stocareObiecte(int n) { Character[] a = new Character[n]; for (int i = 0 ; i< n; i++){ a[i] = 'a'; } } numar de elemente: 100000000 memorie folosita(primitive char): 192.0 [MB] memorie folosita(obiecte Character): 383.0 [MB] Edited by CrocodiluMereuVesel, 23 September 2018 - 10:19. |
#38
Posted 23 September 2018 - 12:13
-- int
numar de elemente: 10000000 memorie folosita(obiecte Integer): 192.0 [MB] memorie folosita(primitive integer): 230.0 [MB] -- char numar de elemente: 10000000 memorie folosita(obiecte Integer): 39.0 [MB] memorie folosita(primitive integer): 58.0 [MB] ia uite ce se intampla daca le pui invers |
#39
Posted 23 September 2018 - 13:38
Cum adica le "pui invers" , defineste ce inseamna a "pune invers", arata ce aici codul cu modificarile "invers"
LE: am inteles ce ai vrut sa spui.Se intampla ca GC-ul jvm-ului sa nu elibereze memoria imediat ceea ce rezulta in alte date, si anume cele expuse de tine. Modifica in cod asa: public static void main( String[] args ) { //stocare metoda A System.gc(); //obliga golirea memoriei daca nu s-a facut automat //stocare metoda B }si apoi testeaza asa: public static void main( String[] args ) { int n = 100000000; System.out.println("numar de elemente: " + " " + n); stocareObiecte(n); amprentaMemorie("obiecte Integer"); System.gc(); //obliga golirea memoriei daca nu s-a facut automat stocarePrimitive(n); amprentaMemorie("primite Integer"); } numar de elemente: 100000000 memorie folosita(obiecte Integer): 1.0 [GB] memorie folosita(primite Integer): 382.0 [MB]si apoi invers: public static void main( String[] args ) { int n = 100000000; System.out.println("numar de elemente: " + " " + n); stocarePrimitive(n); amprentaMemorie("primite Integer"); System.gc(); //obliga golirea memoriei daca nu s-a facut automat stocareObiecte(n); amprentaMemorie("obiecte Integer"); } numar de elemente: 100000000 memorie folosita(primite Integer): 383.0 [MB] memorie folosita(obiecte Integer): 1.0 [GB] Edited by CrocodiluMereuVesel, 23 September 2018 - 14:08. |
#40
Posted 23 September 2018 - 14:11
Puteam sa obtinem acealsi rezultate daca in loc de System.gc() , comentam alternativ cele doua parti de stocare a codului si rulam alternativ si obtinem acelasi rezultate doar ca nu unele sub altele.
|
#41
Posted 23 September 2018 - 15:59
Stiu! Le-am rulat separat si am vazut diferenta dar, pentru ca initial ai trecut doar o parte, a trebuit sa fac la fel.
|
#42
Posted 24 September 2018 - 14:26
CrocodiluMereuVesel, on 22 septembrie 2018 - 21:27, said: System.out.println( "memorie folosita(%COMMENT%): %MEM%" .replace("%COMMENT%", comment) .replace("%MEM%", formatted + " " + um) ); Daca se uita cineva cu atentie la firul discutie, poate observa ca nu a zis nimeni niciodata ca obiectele claselor wrapper ar ocupa mai putina memorie decat primitivele sau ca operatiunile(in special de scriere/modificare/creare) ar fi la fel sau mai rapide. Asta e o aberatie nascocita de troll ramas in pana de argumente cand i se scoate la iveala habarnismul - pt. a deturna discutia in alta directie. Edited by Libertarian, 24 September 2018 - 14:50. |
#43
Posted 24 September 2018 - 16:40
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users