potrzebuję by mój program otwierał/wykonał pewien zewnętrzny plik JAR ale na VM z określoną pamięcią RAM. Zrealizowałem to przez wywołanie cmd.exe z parametrem.
Error occurred during initialization of VM
Could not reserve enough space for object heap
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
nadmienię że powyższe identyczne wywołanie wpisane bezpośrednio do konsoli normalnie uruchamia plik.
Czy jest ktoś w stanie nakierować mnie gdzie popełniam błąd albo jaką inną metodę użyć, bo prawdę pisząc nawet nie wiem w którym kierunku szukać rozwiązania.
Moja teoria jest taka, że VM C# też zajmuje ileś tam pamięci. Jeśli uruchomisz aplikacje C# to może się okazać, że jest za mało dla Javy. Kiedy uruchamiasz przez konsole to C# nie pochłania pamięci, przez co może się okazać, że jest to mniej więcej tyle ile potrzeba Javie. Zmniejsz wartości i spróbuj wtedy.
– Dodane 18.08.2013 (N) 0:51 –
Dodatkowo może pomimo technicznie istniejącej wystarczającej pamięci dojść problem, że VM-y z reguły alokują ciągły blok. 1GB ciągłej pamięci to bardzo dużo np. wyobraź sobie że masz blok 2GB komórek - 1komórka ciągłej pamięci (tak by było nieparzyście), i coś zaalokuje ci komórkę o przesunięciu 1GB (na samym środku tego bloku). Otrzymasz dwa bloki po 1GB - 1 komórka i już 1GB nie za alokujesz (a system będzie twierdził ze prawie 2GB są wolne, bo taka jest suma). Poza tym pamiętam, że był jakiś problem na Javie 32bitowej z powyżej około 1.5GB (więcej info tutaj)