Java n ° 3 pour l'utilisation de la mémoire de flux utile pour les entreprises

Comme il est difficile de se tourner vers, si vous écrivez fondamentalement toute la création de liste avec stream Pour mon aîné, "stream est en fait une déclaration for, donc c'est une perte de mémoire." J'ai eu une critique disant que j'étais un peu irrité, alors je l'ai vérifié.

Essayez d'utiliser une méthode simple de mesure de la mémoire

Tout d'abord, ne rien faire

DecimalFormat f1 = new DecimalFormat("#,###KB");
DecimalFormat f2 = new DecimalFormat("##.#");
long free = Runtime.getRuntime().freeMemory() / 1024;
long total = Runtime.getRuntime().totalMemory() / 1024;
long max = Runtime.getRuntime().maxMemory() / 1024;
long used = total - free;
double ratio = (used * 100 / (double)total);
String info = 
"Informations sur la mémoire Java:total=" + f1.format(total) + "、" +
            "montant à utiliser=" + f1.format(used) + " (" + f2.format(ratio) + "%)、" +
	    "Maximum disponible="+f1.format(max);
System.out.println(info);
Informations sur la mémoire Java:total=125,952 Ko, utilisation=1,997KB (1.6%), Maximum disponible=1,864,192KB

Ensuite, les nombres jusqu'à 10000 sont classés en 3 en utilisant des minutes.

List<Integer> list = new ArrayList<>();
List<Integer> devided1 = new ArrayList<>();
List<Integer> devided2 = new ArrayList<>();
List<Integer> devided3 = new ArrayList<>();
for(int i = 1; i<=10000 ; i++) {
	list.add(i);
}
for(Integer num : list) {
	if(num % 3 == 1) {
		devided1.add(num);
	}
	if(num % 3 == 2) {
		devided2.add(num);
	}
	if(num % 3 == 0) {
		devided3.add(num);
	}
}
Informations sur la mémoire Java:total=125,952 Ko, utilisation=2,665KB (2.1%), Maximum disponible=1,864,192KB

Enfin la même chose en utilisant stream

List<Integer> devided1 = list.stream()
				.filter(i -> i%3 ==1)
				.collect(Collectors.toList());
List<Integer> devided2 = list.stream()
				.filter(i -> i%3 ==2)
				.collect(Collectors.toList());
List<Integer> devided3 = list.stream()
				.filter(i -> i%3 ==0)
				.collect(Collectors.toList());
Informations sur la mémoire Java:total=125,952 Ko, utilisation=3,995KB (3.2%), Maximum disponible=1,864,192KB

Je suis désolé de dire les seniors effrontés. Après tout, si vous répétez le même processus trois fois, cela consommera plus de mémoire. Pour autant que ce nombre soit vu, il semble que la quantité d'utilisation de for soit plus petite même si le même traitement est effectué une fois.

J'ai des doutes sur le terme «réel pour la phrase» Après tout, il n'est pas toujours bon d'en utiliser un nouveau.

Cependant, je pense que ce dernier est toujours lisible et facile à écrire.

Recommended Posts

Java n ° 3 pour l'utilisation de la mémoire de flux utile pour les entreprises
[Java11] Résumé de l'utilisation du flux -Basics-
Application Java pour les débutants: stream
Mesure de la mémoire d'utilisation des instances en Java
Mesure de la mémoire pour les applications Java utilisant jstat
Examiner l'utilisation de la mémoire des éléments Java
Valeur renvoyée lors de l'utilisation de Java n ° 1 Facultatif.if Présent qui a été utile en entreprise
Demandez n jours ouvrables plus tard avec JAVA
Java SE8 Silver est-il utile pour le travail de développement Java? ??
Pour l'apprentissage JAVA (2018-03-16-01)
[Développement Java] Mémoire Java
[Java] Problème n ° 2
[Java] Problème n ° 3
IDE 2017 pour Java
[Java] Problème n ° 1
Étudier Java 8 (Stream)
Terminaison du flux Java
Java pour instruction
[Java] Traitement de flux
Java 9 Facultatif :: stream
[Pour les débutants] Comment utiliser Stream API après Java 8
Filtrez la liste facultative Java n ° 2 utile en entreprise et obtenez la première valeur