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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д