日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java:汇总堆外数据

發布時間:2023/12/3 java 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java:汇总堆外数据 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

探索如何以最小的垃圾收集影響和最大的內存利用率創建堆??外聚合。

使用Java Map,List和Object創建大型聚合通常會產生大量堆內存開銷。 這也意味著,一旦聚合超出范圍,垃圾收集器將必須清理這些對象。

閱讀這篇簡短的文章,了解如何使用Speedment Stream ORM創建堆外聚合,這些聚合可以更有效地利用內存,而對GC的影響很小或沒有。

假設我們有大量具有以下形狀的Person對象:

public class Person {private final int age;private final short height;private final short weight; private final String gender;private final double salary;…// Getters and setters hidden for brievity }

出于爭論的目的,我們還可以訪問一個名為persons()的方法,該方法將使用所有這些Person對象創建一個新的Stream 。

每年齡工資

我們要為每個年齡段創建平均工資。 為了表示匯總的結果,我們將使用稱為AgeSalary的數據類,該數據類將某個年齡與平均工資相關聯。

public class AgeSalary {private int age;private double avgSalary;… // Getters and setters hidden for brievity }

工資的年齡分組通常需要使用少于100個存儲桶,因此此示例僅用于說明原理。 存儲桶越多,聚集異常堆的意義就越大。

使用Speedment Stream ORM,我們可以通過以下三個步驟得出堆外聚合解決方案:

創建一個聚合器

var aggregator = Aggregator.builderOfType(Person.class, AgeSalary::new).on(Person::age).key(AgeSalary::setAge).on(Person::salary).average(AgeSalary::setAvgSalary).build();

聚合器可以反復使用。

計算聚合

var aggregation = persons().collect(aggregator.createCollector());

使用聚合器,我們創建了一個標準的Java流收集器,其內部狀態完全處于堆外。

使用匯總結果

aggregation.streamAndClose().forEach(System.out::println);

由于聚合保存的是堆外存儲的數據,因此可以從顯式關閉中受益,而不僅僅是在很長時間之后才進行清理。 可以通過調用close()方法(可能是利用AutoCloseable特性close()來完成關閉聚合的操作,或者如上例所示,使用streamAndClose()返回流,該流將在流終止后關閉Aggregation 。

一站式服務

上面的代碼可以簡化為一種有效的代碼:

persons().collect(Aggregator.builderOfType(Person.class, AgeSalary::new).on(Person::age).key(AgeSalary::setAge).on(Person::salary).average(AgeSalary::setAvgSalary).build().createCollector() ).streamAndClose().forEach(System.out::println);

還支持并行聚合。 只需添加流操作Stream::parallel并使用ForkJoin池完成聚合。

資源資源

在此處下載Speedment

在此處閱讀有關堆外聚合的更多信息

翻譯自: https://www.javacodegeeks.com/2018/12/java-aggregate-data-heap.html

總結

以上是生活随笔為你收集整理的Java:汇总堆外数据的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。