Рассмотрим следующие два сегмента кода на Java,
Integer x=new Integer(100);
Integer y=x;
Integer z=x;
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
в которых использовалось использование памяти при тестировании в моей системе : Используемая память (байты): 287848
и
int a=100;
int b=a;
int c=a;
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
, в которых использование памяти было при тестировании в моей системе : Используемая память (байты): 287872
и следующие
Integer x=new Integer(100);
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
и
int a=100;
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
в обоих вышеупомянутых случаях использование памяти было точно таким же при тестировании в моей системе : Используемая память (байты): 287872
Оператор
System.out.println("Used memory (bytes): " +
(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory()));
отобразит общий объем памяти, используемый в настоящее время [Общая доступная память - Свободная доступная в настоящее время память], (в байтах).
В качестве альтернативы я проверил с помощью вышеупомянутых методов, что в первом случае использование памяти (287848) было ниже , чем во втором (287872) , в то время как в остальной части в двух случаях это было точно так же (287872) . Конечно и очевидно, что это должно быть так, потому что в самом первом случае y и z содержат копию ссылки, хранящейся в x, и все они (x, y и z) указывают на один и тот же / общий объект (местоположение), что означает, что первый случай лучше и более подходящий , чем второй, а в остальных двух случаях есть эквивалентные утверждения с точно таким же использованием памяти (287872) . Если это так, то использование примитивных типов данных в Java должно быть бесполезным и предотвратимым, хотя в основном они были разработаны для лучшего использования памяти и большей загрузки ЦП.все же почему в Java существуют примитивные типы данных?
Вопрос, отчасти похожий на этот, уже был размещен здесь, но не имел такого сценария.