垃圾收集算法,垃圾收集器_垃圾收集器准则和提示

垃圾收集算法,垃圾收集器

这些是我需要调整GC时通常会看到的一些准则和技巧。 主要由以下两本书组成,而根据我的经验却很少:

  • Java性能
  • JBoss AS 5性能调优

希望它们对在那里的其他人有用!

垃圾收集器

XX:+AggressiveOpts将HotSpot内部布尔变量设置为true以启用其他性能优化

****************************************************** ******************************************************

由于大多数对象在其生命周期内最多只能被一个线程锁定,因此启用-XX:+ UseBiasedLocking可使该线程将锁定偏向自身。 一旦有偏见,该线程便可以随后锁定和解锁对象,而无需诉诸昂贵的原子指令

****************************************************** ******************************************************

要打印默认的人体工程学值:

java -XX:+PrintCommandLineFlags -version

****************************************************** ******************************************************

-XX:+PrintGCDetails打印更多且更有价值的垃圾收集信息。

以下示例显示了通过-XX:+UseParallelGC-XX:+UseParallelOldGC启用的Java 6 Update 25吞吐量垃圾收集器的-XX:+PrintGCDetails输出示例。 输出分布在多行中,以便于阅读。

[GC
[PSYoungGen: 99952K->14688K(109312K)]
422212K->341136K(764672K), 0.0631991 secs]
[Times: user=0.83 sys=0.00, real=0.06 secs]

****************************************************** ******************************************************

包括日期和时间戳

-XX:+PrintGCTimeStamps

YYYY-MM-DD-T-HH-MM-SS.mmm-TZ

-XX:+PrintGCDetails-Xloggc:<filename>结合使用时,即使不指定-XX:+PrintGCTimeStamps ,输出也会自动带有时间戳作为前缀。

****************************************************** ******************************************************

[Full GC (System)
[PSYoungGen: 99608K->0K(114688K)]
[PSOldGen: 317110K->191711K(655360K)]
416718K->191711K(770048K)
[PSPermGen: 15639K->15639K(22528K)],
0.0279619 secs]
[Times: user=0.02 sys=0.00, real=0.02 secs]

系统意味着代码中有一个System.gc()

****************************************************** ******************************************************

http://sysadminsjourney.com/2008/09/15/profile-gc-with-gchisto/
****************************************************** ******************************************************

VisualVM和VisualGC插件

如果远程,则需要安装jstatd守护程序

****************************************************** ****************************************************

分层服务器运行时是通过-server -XX:+TieredCompilationcommand行选项启用的。

小费

如果您不知道最初选择哪个运行时,请从服务器运行时开始。 如果无法满足启动时间或内存占用量要求,并且您正在使用Java 6 Update 25或更高版本,请尝试分层服务器运行时。 如果您没有运行Java 6 Update 25或更高版本,或者分层服务器运行时无法满足启动时间或内存占用量要求,请切换到客户端运行时。

****************************************************** ****************************************************

32位或64位JVM

操作系统 Java堆大小 32位或64位JVM
视窗 小于1300 MB 32位
视窗 介于1500 MB和32 GB之间[*] 64位-d64 -XX:+ UseCompressedOops命令行选项
视窗 超过32 GB 带-d64命令行选项的64位
的Linux 小于2 GB 32位
的Linux 2到32 GB之间[*] 64位-d64 -XX:+ UseCompressedOops命令行选项
的Linux 超过32 GB 带-d64命令行选项的64位
Oracle Solaris 小于3 GB 32位
Oracle Solaris 介于3到32 GB之间[*] 64位-d64 -XX:+ UseCompressedOops命令行选项
Oracle Solaris 超过32 GB 带-d64命令行选项的64位

[*]在具有-XX:+UseCompressedOops的64位HotSpot VM中,最佳性能约为最大Java堆大小约26 GB或更少。

Java 6 Update 18以后的HotSpot VM版本默认基于最大Java堆大小自动启用-XX:+UseCompressedOops

****************************************************** ****************************************************

从parallelOldDC开始:年轻的和老的收藏是多线程的

吞吐量垃圾收集器由HotSpot VM命令行选项-XX:+UseParallelOldGC-XX:+UseParallelGC 。 如果-XX:+UseParallelOldGC在您使用的HotSpot VM版本中不可用,请使用-XX:+UseParallelGC 。 两者之间的区别在于-XX:+UseParallelOldGC启用了多线程的年轻代垃圾收集器和多线程的旧世代垃圾收集器,即次要垃圾收集和完整垃圾收集都是多线程的。 -XX:+UseParallelGC仅启用多线程年轻代垃圾收集器。 与-XX:+UseParallelGC一起使用的旧式垃圾收集器是单线程的。 使用-XX:+UseParallelOldGC也会自动启用-XX:+UseParallelGC 。 因此,如果要同时使用多线程年轻代垃圾收集器和多线程旧代垃圾收集器,则只需指定-XX:+UseParallelOldGC

****************************************************** ****************************************************

垃圾收集日志记录:

-XX:+PrintGCTimeStamps -XX:+PrintGCDetails -Xloggc:<filename>

在将HotSpot VM调整为低延迟时,以下两个命令行选项很有用,因为它们报告了由于VM安全点操作而导致应用程序被阻止的时间,以及应用程序在安全点操作之间执行了多长时间。

-XX:+PrintGCApplicationStoppedTime
-XX:+PrintGCApplicationConcurrentTime

选项-XX:+PrintSafepointStatistics可以帮助区分垃圾回收安全点和其他安全点。

可以使用-XX:+PrintGCApplicationConcurrentTime命令行选项来确定应用程序在感兴趣的某个观察到的响应时间超过应用程序要求的某个时间段内是否正在执行以及执行了多长时间。

****************************************************** ****************************************************

建议的GC日志记录命令行选项

GC命令行选项 最适用
-XX:+ PrintGCTimeStamps
-XX:+ PrintGC详细信息
-Xloggc:<文件名>
为所有应用程序启用的最少的命令行选项集。
-XX:PrintGCDateStamps 在希望查看日历日期和时间而不是指示自JVM启动以来的秒数的时间戳时使用。 需要Java 6 Update 4或更高版本。
-XX:+ PrintGCApplicationStoppedTime
-XX:+ PrintGCApplicationConcurrentTime
-XX:+ PrintSafepointStatistics
在调整应用程序以降低响应时间/延迟时很有用,有助于区分VM安全点操作和其他来源引起的暂停事件。

XX:+PrintCommandLineFlags在HotSpot VM初始化时将选定的初始堆大小和最大堆大小打印为-XX:InitialHeapSize=<n>

-XX:+PrintTenuringDistribution

****************************************************** ****************************************************** ************************

-XX:MaxHeapSize=<m> ,其中<n>是初始Java堆大小(以字节为单位),而<m>是最大Java堆大小(以字节为单位)

****************************************************** ****************************************************** ************************

空间 命令行选项 占用率
Java堆 -Xms和-Xmx 完全垃圾收集后,老一代空间占用率为3到4倍
永久世代 -XX:PermSize -XX:MaxPermSize 完全垃圾收集后,永久生成空间占用率为1.2x到1.5x
年轻一代 -Xmn 完全垃圾收集后,老一代空间占用率为1x到1.5x
老一辈 从Java总堆大小减去年轻代大小中隐含 完全垃圾收集后,老一代空间占用率为2到3倍

****************************************************** ****************************************************** ************************

年轻空间

-XX:NewSize=<n>[g|m|k]

-XX:MaxNewSize=<n>[g|m|k]

-Xmn<n>[g|m|k]

-Xmn可以方便地确定年轻一代空间的初始大小和最大大小

如果(-Xmx != -Xms) && -Xmn存在

Java堆大小的增长或收缩不会调整年轻代空间的大小。

随Java堆大小的任何增长或收缩,年轻代空间的大小将保持不变。 因此,仅当-Xms-Xmx设置为相同的值时, -Xmn应使用-Xmn

****************************************************** ****************************************************** ************************

烫发大小

-XX:PermSize=<n>[g|m|k]

-XX:MaxPermSize=<n>[g|m|k]

强调性能的Java应用程序应将初始和最大永久生成大小( -XX:PermSize-XX:MaxPermSize )的大小都设置为相同的值,因为增加或缩小永久生成空间需要完整的垃圾收集。

****************************************************** ****************************************************** ************************

-XX:-ScavengeBeforeFullGC将在完整垃圾收集上禁用年轻一代空间垃圾收集。

****************************************************** ****************************************************** ************************

2010-11-25T18:51:03.895-0600: [Full GC
[PSYoungGen: 279700K->267300K(358400K)][ParOldGen: 685165K->685165K(685170K)]
964865K->964865K(1043570K)
[PSPermGen: 32390K->32390K(65536K)],
0.2499342 secs]
[Times: user=0.08 sys=0.00, real=0.05 secs]
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space2010-11-25T18:26:37.755-0600: [Full GC
[PSYoungGen: 0K->0K(141632K)]
[ParOldGen: 132538K->132538K(350208K)]
32538K->32538K(491840K)[PSPermGen: 65536K->65536K(65536K)],
0.2430136 secs]
[Times: user=0.37 sys=0.00, real=0.24 secs]
java.lang.OutOfMemoryError: PermGen space

如果您在垃圾回收日志中观察到OutOfMemoryError ,请尝试将Java堆大小增加到JVM可用物理内存的80%到90%。

例如,对于旧世代空间OutOfMemoryErrors,增加-Xmsand -Xmx ,对于永久世代OutOfMemoryErrors,增加-XX:PermSize-XX:MaxPermSize

下一步是计算应用程序的实时数据大小。

****************************************************** ****************************************************** ************************

计算实时数据大小

除了实时数据大小外,处于稳定状态的完整垃圾收集还提供了由于完整垃圾收集而导致的最坏情况下的延迟。

您可以使用实时数据(应用程序繁忙时间内的perm空间+满GC后的旧空间)来计算初始堆大小:

通常,初始和最大Java堆大小命令行选项-Xms和-Xmx的值应设置为旧空间的实时数据大小的三到四倍。

gc1

完全垃圾回收后的旧一代空间占用为295111K,或大约295 MB。因此,实时数据大小约为295 MB。

因此,为此应用程序指定的建议的初始Java堆大小和最大Java堆大小应为885到1180兆字节之间的值,即-Xms1180m -Xmx1180m是实时数据大小的四倍。

同样作为一般规则,初始和最大永久世代大小-XX:PermSize-XX:MaxPermSize应该比永久世代空间的活动数据大小大1.2倍至1.5倍。

在上图所示的示例完整垃圾收集中,完整垃圾收集后的永久生成空间占用为32390K,约32兆字节。 因此,为此应用程序指定的建议的初始和最大永久生成空间大小应在38兆字节和48兆字节之间,即-XX:PermSize = 48m -XX:MaxPermSize = 48m,是永久生成实时数据大小的1.5倍。

作为附加的一般规则,年轻代空间应为旧代空间活动数据大小的1到1.5倍。

结果,建议的年轻代大小应在295到442兆字节之间。 在上图中,年轻一代的空间大小为358400K,约358兆字节。 358兆字节在建议的大小以内。

如果初始和最大Java堆大小是实时数据大小的3倍至4倍,而年轻代空间是实时数据大小的1倍至1.5倍,则旧代空间的大小应在实时数据大小的2倍至3倍之间。

基于上图中的垃圾收集数据,应用这些常规大小调整规则的组合Java命令行为

$ java -Xms1180m -Xmx1180m -Xmn295m
-XX:PermSize=48m -XX:MaxPermSize=48m

空间 命令行选项 占用率
Java堆 -Xms和-Xmx 完全垃圾收集后,老一代空间占用率为3到4倍
永久世代 -XX:PermSize -XX:MaxPermSize 完全垃圾收集后,永久生成空间占用率为1.2x到1.5x
年轻一代 -Xmn 完全垃圾收集后,老一代空间占用率为1x到1.5x
老一辈 从Java总堆大小减去年轻代大小中隐含 完全垃圾收集后,老一代空间占用率为2到3倍

****************************************************** ****************************************************** ************************

音调延迟/响应能力

评估垃圾收集器对延迟的影响涉及以下活动:

  • 测量次要垃圾收集时间
  • 测量次要垃圾收集频率
  • 测量最坏情况下的完整垃圾收集持续时间
  • 测量最坏情况下的全部垃圾收集频率

调整年轻代的大小

从parallelGC到并发-XX:+UseConcMarkSweepGC

如果最坏的情况下,完整垃圾收集持续时间或频率收集频率太高

随着年龄的增长,要记住的其他一般准则是

  • 老一代的空间大小不应小于实时数据大小的1.5倍。 有关实时数据大小的定义和其他旧版本调整大小的准则,请参见上一节“ 确定内存占用空间 ”。
  • 年轻代的空间大小至少应为Java堆大小的10%,该值指定为-Xmx和-Xms。 很小的年轻一代可能适得其反。 它导致频繁的次要垃圾收集。
  • 当增加Java堆大小时,请注意不要超过JVM可用的物理内存量。 Java堆大小消耗的内存足以导致基础系统交换到虚拟内存,从而导致垃圾收集器和应用程序性能下降。

调整旧一代的大小

这项任务的目的是评估由完整垃圾收集引起的最坏情况下的暂停时间以及完整垃圾收集的频率。

如果您仅观察完整的垃圾收集

当修改旧世代空间的大小时,旧世代大小可能会与年轻世代大小失去平衡,并导致应用程序仅经历完整的垃圾回收。 通常,这发生在旧的一代空间不够大而无法容纳所有从年轻一代空间提升的对象时,即使在进行完整的垃圾回收之后。

老式空间不够大的关键指标是,老式空间中的回收空间很小(ParOldGen标签右侧的值),并且在每个完整空间之后,大部分年轻空间仍然被占用。垃圾收集。 当旧一代中没有足够的空间来处理年轻一代的提升对象时,如先前输出中所观察到的,对象将“备份”到年轻一代空间中。

如果由于完整的垃圾收集持续时间太长而无法满足应用程序最坏情况下的延迟要求,那么您应该切换到使用并发垃圾收集器

使用HotSpot命令行选项启用并发垃圾收集器:

-XX:+UseConcMarkSweepGC

****************************************************** ****************************************************** ************************
避免幸存者空间溢出是通过调整幸存者空间的大小来实现的,以使幸存者空间足够大,可以将幸存的对象放置足够长的时间,以便在一段时间内老化。 有效的老化只会将寿命长的物体提升到旧的空间。

小费

老化是将对象保留在年轻一代中直至无法再访问的一种方法,以便为寿命更长的对象保留老一代空间。

使用HotSpot命令行选项调整幸存者空间的大小:
-XX:SurvivorRatio=<ratio>

<ratio>的值必须大于0。- -XX:SurvivorRatio=<ratio>表示每个幸存者空间与eden空间之间的空间比率。 以下公式可用于确定幸存者空间大小:
生存者空间大小= -Xmn<value>/(-XX:SurvivorRatio=<ratio> + 2)

指定为比率的值越大,幸存者空间大小越小。
权属阈值说明

小费

在年轻一代中进行有效的对象老化,以防止它们过早地提升到老一代空间,这降低了老一代的占用率。 这减少了CMS垃圾回收周期必须执行的频率,还减少了碎片的可能性。

还有一个HotSpot虚拟机命令行选项, -XX:MaxTenuringThreshold=<n>可用于询问HotSpot虚拟机仅一个对象的年龄之后,以促进对象的老一代空间超出的值<n>

对于Java 5 Update 6和更高版本,最大使用期限阈值可以设置为0–15,对于Java 5 Update 5和更低版本,可以设置为0–31。

不建议将最大使用期限阈值设置为0。这会导致在分配对象后,在下一个次要垃圾回收中将对象立即从年轻一代提升到老一代。 这将非常Swift地扩展旧一代的空间,并导致频繁的完整垃圾收集。

也建议不要将最大使用期限阈值设置为大于可能的最大值。 这将导致对象保留在幸存者空间中,直到幸存者空间溢出为止。 如果它们溢出,则对象将被无差别地提升为老一代,也就是说,它们不会根据其年龄来提升。 结果,可以在寿命较长的对象之前提升寿命较短的对象,这防止了有效的对象老化。

小费

通常,观察新的占位阈值始终小于最大占位阈值,或者观察所需的幸存者大小小于幸存总字节数(对象年龄的最后一行和最右边的列的值)表明幸存者空间太小。

****************************************************** ****************************************************** ************************

启动CMS收集周期

停止世界压缩垃圾收集是最坏情况下垃圾收集导致的延迟

CMS周期的启动基于旧空间的占用

如果观察到世界各地的压缩垃圾收集,则可以调整CMS周期何时开始。 并发模式故障会在垃圾收集输出中标识CMS中的“停止世界”压缩垃圾收集。 以下是一个示例:

174.445: [GC 174.446: [ParNew: 66408K->66408K(66416K), 0.0000618
secs]174.446: [CMS (concurrent mode failure): 161928K->162118K(175104K),
4.0975124 secs] 228336K->162118K(241520K)

如果您在垃圾回收输出中观察到并发模式故障,则可以使用命令行选项指示HotSpot VM提前启动CMS周期的开始:

-XX:CMSInitiatingOccupancyFraction=<percent>

指定的值是CMS垃圾回收周期应开始的旧占用率的百分比。 例如,如果您希望CMS周期从旧的空间占用率为65%开始,请设置-XX:CMSInitiatingOccupancyFraction=65 。 第二个HotSpot命令行选项应与– XX:CMSInitiatingOccupancyFraction=<percent>结合使用

-XX:+UseCMSInitiatingOccupancyOnly

-Xmx1536m -Xms1536m -Xmn512m
-XX:CMSInitiatingOccupancyFraction = 51
-XX:+仅使用CMSInitiatingOccupancy

显式垃圾回收

如果观察到完整的垃圾回收,这些回收是通过显式调用System.gc() ,那么在使用并发垃圾回收器时有两种处理方法:

  1. 您可以使用HotSpot VM命令行选项请求HotSpot VM作为并发垃圾回收周期执行它们:
  2. -XX:+ ExplicitGCInvokesConcurrent
  3. 要么
  4. -XX:+ ExplicitGCInvokesConcurrentAndUnloadsClasses
  5. 首先需要Java 6或更高版本。 第二个要求Java 6 Update 4或更高版本。 如果您正在使用的JDK版本支持-XX:+ ExplicitGCInvokesConcurrentAndUnloadsClasses,通常会更好。
  6. 您可以使用Hotspot命令行选项让HotSpot VM忽略对System.gc()的显式调用:
  7. -XX:+ DisableExplicitGC
  8. 此命令行选项还忽略其他HotSpot VM垃圾收集器中对System.gc()的显式调用。

尽管在垃圾收集输出中报告了CMS Perm标签,但默认情况下,HotSpot VM不会使用CMS垃圾收集永久生成空间。 要启用CMS永久生成垃圾收集,您必须指定以下HotSpot VM命令行选项:
-XX:+CMSClassUnloadingEnabled
如果使用的是Java 6 Update 3或更早版本,则除了-XX:+ CMSClassUnloadingEnabled外,还必须指定以下命令行选项: -XX:+CMSPermGenSweepingEnabled

CMS暂停时间调整

备注阶段中使用的线程数可以由以下HotSpot VM命令行选项控制:

-XX:ParallelGCThreads=<n>

在某些情况下,可以通过指定以下内容来缩短备注阶段的持续时间:

-XX:+CMSScavengeBeforeRemark

此命令行选项强制HotSpot VM在CMS注释之前执行次要垃圾回收。 在备注之前进行次要的垃圾收集可以通过减少年轻一代空间中可以从旧一代空间到达的对象的数量来最大程度地减少备注阶段的工作量。

如果应用程序中有大量要处理的引用或可终结对象,则指定以下HotSpot VM命令行选项可以帮助减少垃圾收集时间:

-XX:+ParallelRefProcEnabled

最新和最优化

当新的性能优化集成到HotSpot VM中时,通常在命令行选项-XX:+AggressiveOpts下引入它们。

如果应用程序涉众正在寻求其他性能并愿意接受与启用最新优化相关的其他小风险,则应考虑使用-XX:+AggressiveOpts命令行选项。

转义分析

转义分析是一种评估Java对象范围的技术。 特别是,如果某个执行线程分配的Java对象可以被其他线程看到,则该对象“转义”。 如果Java对象无法逃脱,则可以应用其他优化技术。 因此,优化技术称为逃逸分析。

使用以下命令行选项启用HotSpot VM中的转义分析优化:

-XX:+DoEscapeAnalysis

Linux上的大页面

-XX:+UseLargePages

参考:来自我们的JCG合作伙伴 Marco Castigliego的垃圾收集器指南和提示 ,位于“ 删除重复并修复不良名称”博客上。

翻译自: https://www.javacodegeeks.com/2013/12/garbage-collector-guidelines-and-tips.html

垃圾收集算法,垃圾收集器

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

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

相关文章

3SAT问题

3-Satisfiability (3Sat) https://samjjx.github.io/2019/03/14/3sat2ds/

Java,JavaFX的流利设计风格文本字段和密码字段

我刚刚发布了Java版本4.5 &#xff0c;JavaFX主题JMetro 。 此版本为“文本字段”和“密码字段”添加了新样式。 和往常一样&#xff0c;受到Fluent Design的启发。 在这篇文章中&#xff0c;我将详细介绍这个新版本。 JMetro版本4.5 就像我在简介中所说的那样&#xff0c;JM…

零空间,Markov‘s inequality, Chebyshev Chernoff Bound, Union Bound

0. 零空间 零空间是在线性映射&#xff08;即矩阵&#xff09;的背景下出现的&#xff0c;指&#xff1a;像为零的原像空间&#xff0c;即{x| Ax0}。 在数学中&#xff0c;一个算子 A 的零空间是方程 Av 0 的所有解 v 的集合。它也叫做 A 的核&#xff0c;核空间。如果算子是…

prd展示html文件,prd目的.html

PRD目的$axure.utils.getTransparentGifPath function() { return resources/images/transparent.gif; };$axure.utils.getOtherPath function() { return resources/Other.html; };$axure.utils.getReloadPath function() { return resources/reload.html; };业务优先于需求…

连续、偏导数、可微

1 连续的含义 通俗来说&#xff0c;用笔作画&#xff0c;不提笔画出来的曲线就是连续的&#xff1a; 1.1 没有缝隙 我们对连续的函数曲线的直观感受是没有缝隙&#xff1a; 1.2 另一层含义 2 可微的含义 可微可导的几何意义 对于一元函数,可微的几何意义是该点处存在切…

齐次(Homogeneous)、单项式、多项式

齐次 所谓的「齐」&#xff0c;必然是有两个或者以上的对象&#xff0c;那么就以两个对象x,yx,yx,y为例。 齐次&#xff0c;是指所列的式子只和Xn,ynX^n, y^nXn,yn相关&#xff0c;不存在Xm,yl(m≠n,l≠n)X^m, y^l (m \neq n, l \neq n)Xm,yl(m​n,l​n)的项&#xff0c;包…

spring mail 发送html simple,SpringBoot整合Mail邮件发送

Spring提供了非常好用的JavaMailSender接口实现邮件发送。在Spring Boot的Starter模块中也为此提供了自动化配置。添加依赖org.springframework.bootspring-boot-starter-mail配置application.yml文件spring:mail:host: smtp.qq.com# 你的邮箱授权码password:nickname: # 该参数…

二次型、特征值/向量、奇异值、特征值、奇异值分解、奇异值分解(SVD)原理与在降维中的应用

一、二次型 通过矩阵来研究二次函数&#xff08;方程&#xff09;&#xff0c;这就是线性代数中二次型的重点。 1 二次函数&#xff08;方程&#xff09;的特点 1.1 二次函数 最简单的一元二次函数就是&#xff1a; 给它增加一次项不会改变形状&#xff1a; 增加常数项就…

2021年最受欢迎的微信公众号推广方式

时下&#xff0c;微信公众平台已成为热门的营销推广平台&#xff0c;大家都对微信非常重视&#xff0c;有的礼品企业甚至推出N个公共号&#xff0c;抽调专门人手系统运营。每天&#xff0c;都有大量礼品企业使用公众账号通过移动端和粉丝互动&#xff0c;不仅可以群发文字、图片…

计算机应用与软件是csci吗,计算机与信息技术学院

鲁凌云职 称&#xff1a; 副教授学 位&#xff1a;博士邮 箱&#xff1a;lylubjtu.edu.cn办公电话&#xff1a;个人主页&#xff1a;个人履历鲁凌云 (副教授、博士生导师)毕业院校&#xff1a; 北京交通大学最后学位&#xff1a; 工学博士研究方向&#xff1a;无线跨层资源管理…

期望、方差

一、期望和方差的定义 随机变量(Random Variable) X 是一个映射&#xff0c;把随机试验的结果与实数建立起了一一对应的关系。而期望与方差是随机变量的两个重要的数字特征。 1. 期望(Expectation, or expected value) 期望是度量一个随机变量取值的集中位置或平均水平的最基…

【数据结构】图

一.图的定义 1.定义&#xff1a; 图G由顶点集V和关系集E组成&#xff0c;记为G&#xff08;V&#xff0c;E&#xff09; 注&#xff1a;图可以没有边&#xff0c;但不能没有顶点。 2.图的分类&#xff1a; 图的顶点数为n&#xff0c;边数为e 有向图&#xff1a; 无向图&a…

非负矩阵之Perron-Frobenius定理

1. 矩阵论记号约定 2. 非负矩阵之Perron-Frobenius定理 1907 年 O. Perron 发现正矩阵的谱有特别有趣的性质。G. Frobenius 在 1908-1912 年间将 Perron 的工作推广到不可约非负矩阵的情形&#xff0c;并得到了新的进一步结果。 Oskar Perron 在1907年发表了关于正矩阵的一些基…

建议把英语改成选修的计算机老师,越来越多的人建议高中将英语作为选修课,而非必修课,您认同吗?...

很多粉丝家人给白老师留言&#xff0c;说英语应该作为选修课&#xff0c;而不是必修课&#xff0c;因为英语学习影响了太多的学生&#xff0c;尤其是那些有真正才华的学生&#xff0c;而且英语学习又不实用&#xff0c;只是为了考试而已&#xff0c;问我是否认同这种说法&#…

hazelcast 使用_使用Hazelcast发布和订阅

hazelcast 使用几周前&#xff0c;我写了一篇有关Hazelcast入门的博客&#xff0c;描述了创建分布式地图&#xff0c;列表和队列是多么简单。 当时我提到&#xff0c;Hazelcast还做很多其他事情。 该博客快速介绍了Hazelcast的另一个功能&#xff1a;基于Publish / Subscribe模…

谱半径

矩阵的谱或叫矩阵的谱半径&#xff0c;在特征值估计、广义逆矩阵、数值分析以及数值代数等理论的建树中&#xff0c;都占有极其重要的地位&#xff1b; 矩阵的谱半径为矩阵的特征值的模的最大值。 关于矩阵的谱&#xff08;半径&#xff09;的一个重要性质即是&#xff1a;任意…

矩阵迹(trace), 行列式(determinate)

1. 迹&#xff08;trace&#xff09; 矩阵的迹&#xff08;trace&#xff09;表示矩阵 A AA 主对角线所有元素的和 迹的来源 最根本的应该就是迹和特征值的和相等。因为特征值如此重要&#xff0c;所以才定义了迹。离开了这一点&#xff0c;我觉得迹也就失去了立足点。 迹…

计算机的四个硬盘有什么区别是什么意思,笔记本的内存和硬盘有什么区别 原来笔记本硬盘有这几种...

之前有很多人分不清笔记本的内存和硬盘有何区别&#xff0c;很容易发生“内存128GB”的笑话&#xff0c;那么到底硬盘和内存有和区别?如何判断内存好坏呢?我想你应该看看这篇文章。笔记本内存内存是PC中的重要一环&#xff0c;是数据存放和交换的空间&#xff0c;所以内存容量…

抖音上发的测体重的软件怎么测试,抖音手机称重是什么软件 怎么用iPhone苹果手机称重方法...

抖音手机称重是最近很流行的&#xff0c;直接将想要称重的东西放在手机上&#xff0c;我们就可以知道物品的重点了&#xff0c;看上去很有意思&#xff0c;很多人都在玩。而抖音手机称重是什么软件呢&#xff1f;文中为大家介绍。抖音手机称重是什么软件称重计&#xff1a;Touc…

最小/大加代数(Min/max-Plus Algebra)

最小加代数 最小加代数最初是用于数字电路、通信网络以及制造工业等离散事件系统( Discrete Event Systems)建模的一种数学工具。在最小加代数中&#xff0c;下面两个运算符经常用到&#xff1a; 最大加代数 https://www.jianshu.com/p/c9847bb31834