Java Nr. 3 für die Stream-Speichernutzung, die für Unternehmen nützlich ist

Da es schwierig ist, sich umzudrehen, wenn Sie im Grunde die gesamte Listenerstellung mit Stream schreiben Für meinen Senior ist "Stream eigentlich eine for-Aussage, also eine Verschwendung von Gedächtnis." Ich habe eine Bewertung erhalten, die besagt, dass ich etwas irritiert war, also habe ich es überprüft.

Versuchen Sie es mit einer einfachen Speichermessmethode

Tun Sie zunächst nichts

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 = 
"Java-Speicherinformationen:gesamt=" + f1.format(total) + "、" +
            "Menge zu verwenden=" + f1.format(used) + " (" + f2.format(ratio) + "%)、" +
	    "Maximal verfügbar="+f1.format(max);
System.out.println(info);
Java-Speicherinformationen:gesamt=125,952 KB, Verwendung=1,997KB (1.6%), Maximal verfügbar=1,864,192KB

Als nächstes werden die Zahlen bis zu 10000 unter Verwendung von Minuten in 3 klassifiziert.

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);
	}
}
Java-Speicherinformationen:gesamt=125,952 KB, Verwendung=2,665KB (2.1%), Maximal verfügbar=1,864,192KB

Endlich das Gleiche mit 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());
Java-Speicherinformationen:gesamt=125,952 KB, Verwendung=3,995KB (3.2%), Maximal verfügbar=1,864,192KB

Es tut mir leid, freche Senioren zu sagen. Wenn Sie denselben Vorgang dreimal wiederholen, wird mehr Speicherplatz benötigt. Soweit diese Zahl ersichtlich ist, scheint die Verwendungsmenge von for kleiner zu sein, selbst wenn dieselbe Verarbeitung einmal ausgeführt wird.

Ich habe Zweifel an dem Begriff "echt für Satz" Schließlich ist es nicht immer gut, einen neuen zu verwenden.

Letzteres ist jedoch immer noch lesbar und leicht zu schreiben.

Recommended Posts

Java Nr. 3 für die Stream-Speichernutzung, die für Unternehmen nützlich ist
[Java11] Stream Usage Summary -Basics-
Java-Anwendung für Anfänger: Stream
Messen des Instanznutzungsspeichers in Java
Speichermessung für Java-Apps mit jstat
Untersuchen Sie die Speichernutzung von Java-Elementen
Rückgabewert bei Verwendung von Java Nr. 1 Optional.ifPresent, das im Geschäftsleben nützlich war
Fragen Sie n Werktage später bei JAVA nach
Ist Java SE8 Silver für die Java-Entwicklungsarbeit nützlich? ??
Für JAVA-Lernen (2018-03-16-01)
[Java-Entwicklung] Java-Speicher
[Java] Problem Nr. 2
[Java] Problem Nr. 3
2017 IDE für Java
[Java] Problem Nr.1
Java 8 studieren (Stream)
Java Stream-Beendigung
Java für Anweisung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream
[Für Anfänger] So bedienen Sie die Stream-API nach Java 8
Filtern Sie die optionale Java No. 2-Liste, die im Geschäftsleben nützlich war, und erhalten Sie den ersten Wert