Java и оперативка

Узнай цену своей работы

Формулировка задачи:

Не пугайтесь, что вопрос большой, на самом деле он супер простой, просто я хочу быть как можно более информативным. Решил попробовать Java, имея хорошие знания по С++/Qt. Начал чтение Шилдта, с первых страниц все так радужно и прекрасно, многое и так уже известно, поетому решил читать выборочно, чтобы легко перевести знания по С++ на Java (понимать где различия и т.д.). Благо все знакомо и я решил пойти сразу же в GUI (JavaFX). С первых же минут меня расстроил Eclipse и его 400 Мб оперативы со старта и 550 во время работы над проектом, но дело не об этом. Установил плагины для работы с JavaFX и запустил следующий пример:
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);
    }
}
Запустилось пустое окно,посмотрел в диспетчере задач на оперативку для этого приложения и был очень сильно удивлен (сразу скажу, что я понимаю, что диспетчер задач не дает точную инфу, но приблизительное представление он все же дает). Итак этот код сожрал 47МБ, хм, действительно? Добавил кнопку(то есть разкоментировал то, что в коде выше), теперь 55 МБ, хм, ничего себе! Понимаю, что приложение запускаеться из-под той виртуальной машины, поетому запустил простейший код
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!");
         
    }
 
}
Диспетчер показал 11МБ, то есть вывод, машина жрет столько же примерно. То есть мое пустое окно жрет 55 - 11, думаю, может сделать его как jar? Экспортировал и запустил, ничего нового, все так же 55. Остаеться у меня последнее - делать из этого exe? Но поможет ли это или же просто уберет те 11 МБ, которые виртуальная машина ест( то есть экзешник возьмет лишь 55 - 11, или же он каким-то образом существенно уменьшит использование оперативы)? Спрашиваю я это потому что в C++/Qt пустое окно ест 15 МБ, а добавление кнопки почти не увеличивает использование оперативы и мне почему-то кажеться, что может я где-то не прав и из-за незнания(ведь новичок в Java) мои проги и жрут столько. Есть ли способы уменьшить использование оперативы, поможет ли мне экзешник или это просто моя криворукость и у гуру таких проблем нет. P.S. Приняв во внимание то, сколько жрет Eclipse и то, что собственно на Java он и написан, я пока думаю, что это у всех так и эти 50МБ для пустого окна это норма, однако хочу чтобы более опытные программисты все же подвердили это или опровергли и сказали пути обхода.

Решение задачи: «Java и оперативка»

textual
Листинг программы
java -Xms15M -Xmx30M -jar myJarFile.jar

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.75 из 5