垃圾收集 java_关于Java垃圾收集

垃圾收集 java

本文讨论的是使用的最流行的框架之一带来的开销–我敢打赌,几乎没有应用程序不使用java.util.Collections。

本文基于以下事实:框架为例如集合的初始大小提供了默认值。 因此,我们有一个假设,即大多数人不会费心地自行管理其收藏的大小,因此最终会导致未充分利用的收藏浪费了内存。 如果是这样,我们可以实施一个解决方案,告诉人们创建半空集合的位置以及如何避免浪费内存。

测量

为了检验我们的假设,我们决定测量十三种最常见的java.util.Collection成员的用法:

  • java.util.HashMap
  • java.util.WeakHashMap
  • java.util.IdentityHashMap
  • java.util.Hashtable
  • java.util.LinkedHashMap
  • java.util.HashSet
  • java.util.LinkedHashSet
  • java.util.ArrayList
  • java.util.concurrent.ArrayBlockingQueue
  • java.util.Vector
  • java.util.ArrayDeque
  • java.util.PriorityQueue
  • java.util.concurrent.ConcurrentHashMap

对于从这些类派生的所有对象,我们每30秒测量一次集合中包含的对象的数量以及集合底层数组中的空白空间的数量。 这种空空间消耗的内存量浪费了集合。 使用特殊版本的Plumbr从556个不同的实际应用程序中收集了这些数据。

结果

为了估算问题的严重程度,我们在每30秒后计算了所有收集的总浪费,并针对每个会话取了这些总计的最大值和平均值。 从下图还可以看到,大多数会话(556个中的397个)的最大摘要浪费小于1 MB,只有32个会话的最大摘要浪费超过10 MB,最大约为60 MB 。

ArrayList-HashMap-overhead3

该图的读取应类似于以下示例:共有291个应用程序浪费了大于0.1MB但小于1MB的内存。

结论

将结果与分配的堆大小进行比较,我们得出的结论是,这个问题不够大,至少如果将浪费定义为未使用的堆。 也使我们放弃这一方向的研究是碎片化–这种浪费通常散布在100多个不同的馆藏中,从而使优化工作更加困难且更容易出错。

这项特殊的研究没有详细说明动态增加底层阵列上的CPU开销是否足够大,这将是另一个故事。

参考: 在我们的JCG合作伙伴 Kairi Kangro的Java Collection Waste上,来自Plumbr Blog博客。

翻译自: https://www.javacodegeeks.com/2014/01/on-java-collection-waste.html

垃圾收集 java

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

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

相关文章

Latex \bibliographystyle+修改字体字号的大小

1. bibliography style LaTeX 标准选项及其样式共有以下8种: plain ,按字母的顺序排列,比较次序为作者、年度和标题. unsrt ,样式同plain,只是按照引用的先后排序. alpha ,用作者名首字母年份后两位作标号…

boxplot

1. 简介 箱形图,又称为盒须图、盒式图、盒状图或箱线图,是一种用作显示一组数据分散情况资料的统计图。箱形图于1977年由美国著名统计学家约翰图基(John Tukey)发明。它能显示出一组数据的最大值、最小值、中位数、上下四分位数及…

Java 11的期望

过去的几年对Java世界一直是动荡不安的,在相当多的发行版中添加了各种各样的功能。 在开发人员社区中,人们逐渐意识到Java的开发速度不够快。 在最初的20年中,Java平台和Java开发工具包(JDK)经历了庞大,不…

martingale与Markov Process的关系

鞅过程与马尔科夫过程是什么关系? 1.鞅代表的是公平游戏,马尔可夫过程侧重过程无记忆性 总而言之:鞅和马尔可夫过程没有包含的关系。因为鞅代表的是公平游戏,而马尔可夫过程侧重过程无记忆性。两者没有内在联系。 注&#xff1…

LaTeX双栏模板插入通栏公式(跨栏插图)

1. 利用带星号的浮动体环境 带星号的浮动体figure和table环境可以在双栏模板中使用,例如我们以IEEEtran为例,插入通栏公式 \documentclass{IEEEtran} \usepackage{amsmath,lipsum} \begin{document} \lipsum[1] \begin{figure*} \begin{ali…

renew process 更新过程

一个泊松过程可以分解成一系列 i.i.di.i.di.i.d 的指数分布随机变量相加,如果把指数分布换成其他 i.i.di.i.di.i.d 的分布就得到了更新过程。 更新过程本身是泊松过程的一种扩长,同时更新过程也可以发展出一套更新理论,包括更新方程等。 htt…

离散时间信号,连续时间信号,模拟信号,数字信号区别

连续时间信号 : 在时间t 上是连续的值 时间连续, 幅值连续。 定义为模拟信号。时间连续, 幅值离散。 比如脉冲信号。 离散时间信号 : 在时间t上 是离散的值 时间离散, 幅值连续。 (在任意两个离散时间点…

java8 javafx_Java8中的外观(JavaFX8)

java8 javafxJavaFX8在外观方面进行了一些更改 ,其中最相关的是新CSS API ,它允许您为控件以及已公开的Skin类创建新CSS属性和伪类。 使用CSS可以更改控件的很多外观,但是CSS可以实现很多功能,这就是Skin类的用处。从“ UI控件体…

如何通俗易懂地解释卷积?

马同学 从数学上讲,卷积就是一种运算。 某种运算,能被定义出来,至少有以下特征: 首先是抽象的、符号化的 其次,在生活、科研中,有着广泛的作用 比如加法: [公式] ,是抽象的&…

具有中央异常处理和VO验证的Spring Data JPA –框架

1.简介 一段时间以来,Spring框架已成为事实上的标准,可以创建任何基于REST API的应用程序。 Spring提供了各种现成的组件,以避免编写重复而繁琐的样板代码。 另外,关于Spring的美丽之处在于,如果有现成的解决方案&…

初识斯蒂尔杰斯积分(Stieltjes integral)

https://blog.csdn.net/Northernland/article/details/83051415

drools6.5_使用Drools 6.0进行部署

drools6.5KieScanner 6.0 KieScanner取代了5.x KnowledgeAgent。 它使用嵌入式Maven允许在运行时解析和检索jar。 6.0应用程序现在可以轻松支持依赖关系和可传递依赖关系; 使用众所周知的Maven语义进行版本控制。 它允许在类路径上部署,也可以在运行时动…

双子(Dioid)

双子代数是若其对任意无限多元的 “和”封闭且乘法对此无限和具分配律。 https://baike.baidu.com/item/%E5%8F%8C%E5%AD%90%E4%BB%A3%E6%95%B0

具有外部Zookeeper集成并使用SOLRJ API访问数据的SOLR cloud 7.4集群配置

SOLR是最流行且高度可扩展的搜索引擎之一,它基于分布式索引技术运行。 Solr索引几乎可以基于任何类型的数据源(CSV数据或XML数据或从RDBMS数据库或标准文件系统中提取的数据)构建。 对于以RDBMS数据库作为后端构建的任何Web应用程序&#xf…

随机过程及其稳态stability

1. 为什么要研究随机过程? 人类认识世界的历史,就是一认识和描绘各种运动的历史,从宏观的天体运动到分子的运动,到人心理的运动-我们通称为变化,就是一个东西随时间的改变。 人们最成功的描绘运动的模型是牛顿的天体…

求离散马尔科夫链的平稳分布+按照一定概率分布生成想要的样本

1. 求离散马尔科夫链的平稳分布的两种解法 假设离散马尔科夫链的转移矩阵为P PP,平稳分布为π \piπ,则平稳分布满足: PππP \pi \piPππ 1.1 迭代法 求平稳分布的一种简单方法是迭代法,即随机初始化初始分布π 0 \pi_0π 0 …

MCMC 和 Gibbs采样

0. MCMC 从名字我们可以看出,MCMC由两个MC组成,即蒙特卡罗方法(Monte Carlo Simulation,简称MC)和马尔科夫链(Markov Chain ,也简称MC)。 Monte Carlo (蒙特卡罗&#x…

使用Java流和In-JVM-Memory的超低延迟查询

自然界的基本规则(例如光速和通用信息论)对我们可以从传统系统体系结构中获得的最大性能设置了明显的限制。 了解您作为Java开发人员如何使用JVM技术和Java流将性能提高几个数量级。 例如,如果应用程序服务器和数据库服务器相距100 m&#…

信道接入技术及协议

1. 信道共享方式 在普通的通信系统中,信道共享方式有3种:点对点、点对多点和多点共享。 1.1 点对点 点对点是最简单的信道共享方式。其特点是只有两个节点共享无线信道。在单信道时,两个节点可以通过半双工方式实现共享,在双信…

MATLAB | 解决打开延迟的情况

问题 最近打开matlab,一直没有反应,大概几分钟后,才开始有反应。 网上关于matlab启动出现延迟的方法有很多种解决方法。但都是针对破解版的,而装正版matlab2020b,缺少license文件。对于此,我们尝试用另外一…