Zdravím,
potřeboval bych pomoct ... potřebuji vytvořit opravdu velké dvourozměrné pole ... základní předpoklad byl:
static int[][] spb = new int[DEL][256];
// kde DEL je hodnota přes 200 000 ... (konkrétně potřebuji abnormálně velké pole o 564 859 072 961 řádcích)
ovšem program mi napíše již při 265 720 řádcích "OutOfMemoryError: Java heap space"
Poradil by mi někdo, co s tím mohu udělat ... potřebuji velmi rychlí přístup k hodnotám v poli.
Fórum › Java
Omezení velikosti pole
vis o tom, ze za predpokladu, ze ma int 4B a chces ho na radek 256x to dava:
(4*256*564859072961)/(1024*1024*1024*1024) = 526.06600612495094537735 TB (a to ne marketingovejch:))
a (4*256*256720)/(1024*1024) = 250MB ... pri trose stesti a velky ramce muzes nastavit heap na treba 4/8GB (nezapomen si nechat neco na system)
To KIIV :
tak to jsem opravdu nevěděl ...
v tom případě bych potřeboval pomoci s trochu něčím jiným ... vím totiž už dopředu že pole bude z více než 90% prázdné ... je možné že by pomohlo pouze alokování těch řádků, které by byly použity ?
něco ve smyslu:
** static int[][] spb = new int[564 859 072 961][ ];
a dodatečně v případě potřeby
** spb[i] = new int[256]; //vcelku by možná stačilo i 128 (musel bych si to ještě teoreticky ověřit)
??
ovšem mám obavu, že podle vašeho vztahu stejně překročím velikost pole i bez další alokace ...
Potřeboval bych vyjádření k této alternativě.
To McQman : Takove pole na domacim stroji opravdu nikam nenacpes. Jestli neco takoveho potrebujes, tak mas asi celou koncepci programu spatne. Prozradis o co se snazis? Treba to jde prespat na neco rozumneho.
To Krychlik :
máš pravdu ... celou noc jsem o tom přemýšlel a protože celé pole bylo příliš veliké a podle Kiiva nereálné, tak jsem našel řešení
pole jsem rozdělil na několik polí ... jak jsem výše psal, tak jsem skutečně dospěl k názoru, že když je více než 90% pole nevyužito, tak je není třeba tvořit ... z celého množství jsem dospěl k závěru, že budu potřebovat cca 300.000 řádků ... ve třech nezávislých až 5-rozměrných polích k tomu mohu dospět, když budu generovat jen potřebné řádky ... bez přenastavení heapu
o čem je program ... promiň ale zatím si to nechám pro sebe ;)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Omezení rozsahu pole — založil ppremos
Změna velikosti pole — založil Martin
Změna velikosti dvourozměrného pole za běhu programu — založil Petr S.
Nastavení velikosti pole pro čtení řádku z txt. — založil lukas011
Omezení správce PC — založil Maverick101
Moderátoři diskuze