2012-06-30 17 views
11

Nawiązując do tego wątku:ile pamięci ma węzeł przeznaczyć na wartości null w macierzach

Lots of null values in an array mean any harm?

Zrobiłem to z node.js:

arr=[] 
arr[1000]=1 
arr[1000000000]=2 
arr.sort() 

I mam

FATAL ERROR: JS Allocation failed - process out of memory 

Tak, że zostawia mnie z pytaniem (nie mogłem znaleźć go na Yahoogle) ile mem ory jest rzeczywiście przydzielane dla wpisu o wartości NULL w tablicy w węźle. I nie planujesz używać 1000000000 wpisy, nawet nie blisko, ale może to nie jest nadal warto alokacji pamięci ...

Kto wie, w jaki sposób mogę sprawdzić?

+0

Twój program działa dobrze dla mnie w węźle 0.6.2. – Pointy

+1

Moim zdaniem nie ma to zależności od node.js, ale wyłącznie od implementacji silnika JavaScript z JavaScriptem jako pytaniem, do którego odwołujesz się do stanów. – HeatfanJohn

+0

Czy kończy się niepowodzeniem na 'arr.sort()'? – Eric

Odpowiedz

1

Tak w skrócie, node.js nie przydzielić pamięci dla wartości niezdefiniowanych w tablicy. Wypadek, który doświadczyłem, musiał być usterką, której nikt nie mógł odtworzyć, a zainstalowanie najnowszej wersji węzła node.js wyeliminowało problem również dla mnie.

-3

EDIT: Przepraszam za niedokładne, mogą nie mieć zastosowania do JAVA ..
Wciąż może być pomocne dla kogoś, kto potrzebuje go w innej aplikacji.

tablicę odniesienia przeznacza X

zatem przydzielenie arr [100000] przeznaczy 100 KB x 4b ~ = 0.5MB (zbliżenie)

i tak, na pewno, jeśli nie będzie wykorzystanie wszystkie Array,
powinieneś rozważyć HashMap, który jest datastructure właśnie dla tego ..
HashMap najlepiej jest o dużej rozpiętości wyszukiwania z względnie małą ilością elementów.

czy inaczej, istnieją rozwiązania, w celu podziału na małą tablicy i rozszerzają się w miarę potrzeby, w razie potrzeby.

+2

Nie, JavaScript nie jest podobny do innych języków. Tablice nie są wcześniej przydzielane. Zasadniczo * są * hash mapami. – Pointy

+0

Myślałem o hashe, ale nadal będę używać liczb całkowitych jako kluczy i muszę je sortować według klucza (lub przynajmniej zachować ich porządek nienaruszony) i powtarzam je kolejno. To brzmi jak praca dla tablic, a nie dla Hashe, prawda? – EasierSaidThanDone

+0

@EasierSaidThanDone jakiej wersji Node używasz? Ten kod jest w porządku dla mnie (0.6.12) – Pointy

Powiązane problemy