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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344271.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 西南科技大学 施工组织 在线考试复习资料

施工组织——在线考试复习资料 一、单选题 1.在双代号时标网络计划中,其关键线路是( )。 A.自始至终没有虚工作的线路 B.自始至终没有波形线的线路 C.既无虚工作,又无波形线的线路 D.所需资源最多的工作构成的线路 2.施工现场的道路干线应采用( )布置。 A.一字形 B.U形 C.环形…

计算机房英语单词,主机房是什么意思

1. 介绍了冷热源的选择及空调风系统、水系统、自控系统设计及主机房采取的安全措施,并做了几点设计总结。Presents the selection of cold and heat sources and design of the air system, water system, control system and the safety measures for main equipme…

[渝粤教育] 西南科技大学 材料力学 在线考试复习资料(1)

材料力学——在线考试复习资料 一、单选题 1.对于静定结构,若改变杆件横截面的尺寸,则 。 A.内力不变,位移不变 B.内力改变,位移不变 C.内力不变,位移改变 D.内力改变,位移改变 2.叠加原理用于求解静定结构时,需要满足的条件是 。 A.材料是理想弹性的 B.位移是微…

[渝粤教育] 西南科技大学 现代企业管理 在线考试复习资料

现代企业管理——在线考试复习资料 一、单选题 1.在企业科学管理阶段,泰勒提出的思想是( ) A.人群关系理论 B.需求层次理论 C.科学管理理论 D.双因素理论 2.产品发展期的主要特点是( ) A.销量迅速增加 B.企业利润增长慢 C.成本高、亏损严重 D.需要对产品的进退进行认真选择 3…

html引入latex,如何在html文件中使用MathJax或LaTex?

我无法让它工作,我不确定我做错了什么。我已经下载了MathJax.js,创建了一个html文件,并将其与js文件相关联。我甚至在此处复制并粘贴了之前已回答的问题,只是将vpn(vpn也没有工作,但问题和响应超过三年)的链接更改为我…

java中属性外部化_用Java可外部化

java中属性外部化在理解Externalizable接口之前,您需要了解序列化。您可以在java中的序列化上阅读有关序列化的更多信息。 Java提供了一种称为序列化的机制,以按字节的有序或字节序列的形式持久化Java对象,其中包括对象的数据以及有关对象的…

[渝粤教育] 西南科技大学 电子设计EDA 在线考试复习资料

电子设计EDA——在线考试复习资料 一、单选题 1. 执行菜单命令( ),用户可以选定某个元件,使程序只对与该元件相连的网络进行自动布线。 A.uto Routing/All B.uto Routing/Net C.uto Routing/Connection D.uto Routing/Component 2.对选中元件进行逆时针旋转,可以按( )。 A…

[渝粤教育] 西南科技大学 管理信息系统 在线考试复习资料(1)

管理信息系统——在线考试复习资料 一、单选题 1.系统转换是在( ) A.系统分析阶段 B.系统设计阶段 C.系统实施阶段 D.系统规划阶段 2.系统设计包括多项内容,下述哪一项是系统设计最基础性的工作?( ) A.代码设计 B.屏幕设计 C.输入设计 D.输出设计 3.用决策树描述处理逻辑是在…

在您的Maven-Fu包中增加了一些东西

Apache Maven很简单,但是功能非常强大。 使用一些技巧,您可以大大简化和优化您的开发经验。 处理多个非托管模块 假设您有一个主项目A提供了两个实用程序模块foo和bar ,另一个项目B A了foo和bar 。 在使用B ,您意识到需要偶尔对…

计算机网络的权威杂志,科学网—晒个自己整理的计算机网络和通信方向可能相关的期刊列表...

晒个自己整理的计算机网络和通信方向可能相关的期刊列表已有 3051 次阅读2010-1-14 13:42|个人分类:论文交流|系统分类:论文交流|关键词:网络,通信,国际期刊列表1 ACM的期刊列表 51.1. Communication of the ACM (http://cacm.acm.org/)1.2. NetWorker h…

[渝粤教育] 西南科技大学 经济法概论 在线考试复习资料2021版(3)

经济法概论——在线考试复习资料2021版 一、单选题 1.债务人放弃其到期债权,致使债务人无法清偿债权人的债权,债权人可以行使( )。 A.解除权 B.撤销权 C.代位权 D.抵消权 答案:看左边查询 2.在代位权诉讼中,债务人的诉讼地位是( )。 A.原告 B.被告 C.有独立请求权的第三人 D…

[渝粤教育] 西南科技大学 英语语法1 在线考试复习资料

英语语法1——在线考试复习资料 一、单选题 1.I was arguing with Cathy,Justin came in and took sides with her. A.when B.while C.the moment D.since 2.Though he is a five-year-old boy, helike a child. A.objects to be treated B.objects to being treated C.object…

ci 邮件 html模板,CI Email类发邮件

发邮件代码详情private function _send_mail($data) {//附件一,名称参数编码转换if(!empty($data[resume_name])){$file_name iconv(UTF-8,GB2312,$data[file_name]);}//附件二,名称参数编码转换if(!empty($data[resume_name])){$resume_name iconv(UT…

[渝粤教育] 西南科技大学 语文教材教法 在线考试复习资料2021版

语文教材教法——在线考试复习资料2021版 一、单选题 1.语文智育教育的内容包括哪些方面?阐述不正确的是: A.培养学术能力 B.培养记忆力 C.培养观察力 D.培养注意力 答案:看左边查询 2.考查与考试都不具有的功能:( ) A.评定功能 B.诊断功能 C.训练功能 D.反馈功能 答案:看…

[渝粤教育] 西南科技大学 钢结构 在线考试复习资料

钢结构——在线考试复习资料 一、单选题 1.屋盖支撑的主要作用是( )。 A.保证结构的空间刚度 B.增加屋架的侧向稳定 C.传递屋盖的水平荷载 D.便于屋盖的安全施工和A,B,C 2.钢结构实腹式压弯构件一般应进行的计算内容为( )。 A.强度、弯矩作用平面外的整体稳定性、局部稳定、…

账户与使用计算机的人无关,本地用户和组

本地用户和组用户账户的概述:用户账户是计算机的基本安全组件,计算机通过用户账户来辨别用户身份,让有使用权限的人登录计算机,访问本地计算机资源或从网络访问者台计算机的共享资源。Windows Server 2008 支持两种用户账户&#…

【渝粤教育】电大中专成本会计_1作业 题库

1.下列关于产品成本计算制度的表述错误的是()。 A.标准成本计算制度下只能提供标准成本无法提供实际成本 B.完全成本计算制度下生产制造过程的全部成本都计入产品成本 C.产量基础成本计算制度是以产品数量,或者与产品数量有密切关系的人工成本…

spring 文件变化监听_Spring新变化

spring 文件变化监听让我们检查一下Spring社区在前几天发布的一些新版本: Spring Boot 1.0.0.RC1 Spring很高兴地宣布Spring Boot v1.0.0的第一个候选版本。 它包含了先前里程碑中的许多错误修复和增强功能。 二进制文件已发布到Spring Maven存储库 。 项目页面将…

奥鹏计算机基础18秋在线作业答案,18秋华师《计算机基础》在线作业1(标准答案).doc...

【奥鹏】[华中师范大学]华师《计算机基础》在线作业试卷总分:100 得分:100第1题,下列四组数依次为二进制、八进制和十六进制,符合要求的是____。A、11,78,19B、12,77,10C、12,80,10D、11&#x…

【渝粤教育】电大中专消费者心理学答案作业 题库

1.在西方,早期思想家也有论及消费时令和消费季节的朴素思想。该说法( ) A.错误 B.正确 正确 正确答案:左边查询 学生答案:A 2.体系凝构阶段大致自20世纪70年代延至20世纪末或21世纪初。该说法( &#xff09…