[JAVA] Ukončení rekurze podle stavu zásobníku
Chtěl bych se zeptat jesli je v JAVE možnost zjistit velikost a stav zásobníku. Potřebuji provádět rekurzi co nejdéle to jde, ale zas ne aby přetekl zásobník. Přemejšlel jsem jesli by nějak nešlo kontrolovat zaplněnost zásobníku a tak při 90% rekurzi ukončit. Pleas nepište, že to mám dělat cyklem...
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
Stack.empty() ?
Bez cyklu? Bud budes mit vlastni, nebo systemovy zasobnik.
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
Asi jsem se špatně vyjádřil. Myslel jsem zásobník, kam se ukládají návratové hodnoty z rekurze.
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
Pak zvysit velikost zasobniku...
napriklad: java -Xss16m
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
Můžu se zeptat na důvody této ehm prasárny?
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
Citace:
Původně odeslal
mike.pr
Můžu se zeptat na důvody této ehm prasárny?
Dělám simulátor programovacího jazyka Karel, tak bych chtěl aby se to chovalo tak jak by mělo...
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
jde o to jak to implemetuješ, halda interpretovaných jazyků (emulátorů) používá dynamický zásobník (případně pole s určitou délkou) => hlídáš si velikost zásobníku emulovaného stroje sám
pokud ale kompiluješ rovnou do java kódu tak je nejlepší opravdu sdělit, že to co člověk dělá není OK => ošetřit správně StackOverflowException
Re: [JAVA] Ukončení rekurze podle stavu zásobníku
Nevim jestli Karla znáš, ale mám to takto: Mám metody které pohybují s Karlem po hracím poli. Dále tam mám mapu těchto metod a v této mapě je klíčem klíčové slovo jazyka Karel. Např. dvojce <"STEP",metoda step> . Takže metodu volám takto ((Method)prikazy.get(prikaz)).invoke(robot,null); /*prikazy je mapa prikazu a prikaz je dany příkaz*/
Jenže když to volám přes to INVOKE, tak všechny vyjimky jsou schovany v "InvocationTargetException" a těžko se mi StackOverflowException odchytává. Chce to asi experimentovat aby se to odchytilo správně v každym případě.