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

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

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

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

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут