Java и оперативка
Формулировка задачи:
Не пугайтесь, что вопрос большой, на самом деле он супер простой, просто я хочу быть как можно более информативным.
Решил попробовать Java, имея хорошие знания по С++/Qt. Начал чтение Шилдта, с первых страниц все так радужно и прекрасно, многое и так уже известно, поетому решил читать выборочно, чтобы легко перевести знания по С++ на Java (понимать где различия и т.д.). Благо все знакомо и я решил пойти сразу же в GUI (JavaFX).
С первых же минут меня расстроил Eclipse и его 400 Мб оперативы со старта и 550 во время работы над проектом, но дело не об этом.
Установил плагины для работы с JavaFX и запустил следующий пример:
Запустилось пустое окно,посмотрел в диспетчере задач на оперативку для этого приложения и был очень сильно удивлен (сразу скажу, что я понимаю, что диспетчер задач не дает точную инфу, но приблизительное представление он все же дает). Итак этот код сожрал 47МБ, хм, действительно? Добавил кнопку(то есть разкоментировал то, что в коде выше), теперь 55 МБ, хм, ничего себе! Понимаю, что приложение запускаеться из-под той виртуальной машины, поетому запустил простейший код
Диспетчер показал 11МБ, то есть вывод, машина жрет столько же примерно. То есть мое пустое окно жрет 55 - 11, думаю, может сделать его как jar? Экспортировал и запустил, ничего нового, все так же 55. Остаеться у меня последнее - делать из этого exe? Но поможет ли это или же просто уберет те 11 МБ, которые виртуальная машина ест( то есть экзешник возьмет лишь 55 - 11, или же он каким-то образом существенно уменьшит использование оперативы)?
Спрашиваю я это потому что в C++/Qt пустое окно ест 15 МБ, а добавление кнопки почти не увеличивает использование оперативы и мне почему-то кажеться, что может я где-то не прав и из-за незнания(ведь новичок в Java) мои проги и жрут столько.
Есть ли способы уменьшить использование оперативы, поможет ли мне экзешник или это просто моя криворукость и у гуру таких проблем нет.
P.S. Приняв во внимание то, сколько жрет Eclipse и то, что собственно на Java он и написан, я пока думаю, что это у всех так и эти 50МБ для пустого окна это норма, однако хочу чтобы более опытные программисты все же подвердили это или опровергли и сказали пути обхода.
package application; import javafx.application.Application; import javafx.scene.control.Button; import javafx.stage.Stage; import javafx.scene.Scene; import javafx.scene.layout.BorderPane; public class Main extends Application { @Override public void start(Stage primaryStage) { try { BorderPane root = new BorderPane(); Scene scene = new Scene(root,400,400); //Button btn = new Button();закоментировано пока //btn.setText("Say 'Hello World'"); scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm()); primaryStage.setScene(scene); primaryStage.setTitle("GUI"); primaryStage.show(); } catch(Exception e) { e.printStackTrace(); } } public static void main(String[] args) { launch(args); } }
import java.io.IOException; public class main { public static void main(String[] args) { // TODO Auto-generated method stub System.out.println("Hello World!"); try { System.in.read();//просто нужно остановить приложение чтобы оно висело в диспетчере } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("After!"); } }
Решение задачи: «Java и оперативка»
textual
Листинг программы
java -Xms15M -Xmx30M -jar myJarFile.jar
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д