草庐IT

gc_probability

全部标签

java - 使用 -gc true 在 Java 12 与 Java 8 上的流 API 的神秘微基准测试结果

作为我对在流中使用复杂过滤器或多个过滤器之间区别的调查的一部分,我注意到Java12的性能比Java8慢。对这些奇怪的结果有什么解释吗?我在这里错过了什么吗?配置:java8OpenJDK运行时环境(build1.8.0_181-8u181-b13-2~deb9u1-b13)OpenJDK64位服务器VM(内部版本25.181-b13,混合模式)java12OpenJDK运行时环境(内部版本12+33)OpenJDK64位服务器VM(内部版本12+33,混合模式,共享)虚拟机选项:-XX:+UseG1GC-server-Xmx1024m-Xms1024mCPU:8核JMH吞吐量结果:预

java - JVM GC 是否会在引用比较过程中移动对象,导致即使双方都引用同一个对象也无法进行比较?

众所周知,GC有时会在内存中移动对象。据我了解,只要在移动对象时(在调用任何用户代码之前)更新所有引用,这应该是完全安全的。但是,我看到有人提到引用比较可能是不安全的,因为在引用比较中间被GC移动了对象,这样即使两个引用都应该引用同一个对象,比较也可能失败?即,是否存在以下代码不会打印“true”的情况?Foofoo=newFoo();Foobar=foo;if(foo==bar){System.out.println("true");}我尝试用谷歌搜索,但由于缺乏可靠的结果,我相信说这话的人是错误的,但我确实找到了各种论坛帖子(likethisone),似乎表明他是正确的。但是那个帖

java - JVM GC 是否会在引用比较过程中移动对象,导致即使双方都引用同一个对象也无法进行比较?

众所周知,GC有时会在内存中移动对象。据我了解,只要在移动对象时(在调用任何用户代码之前)更新所有引用,这应该是完全安全的。但是,我看到有人提到引用比较可能是不安全的,因为在引用比较中间被GC移动了对象,这样即使两个引用都应该引用同一个对象,比较也可能失败?即,是否存在以下代码不会打印“true”的情况?Foofoo=newFoo();Foobar=foo;if(foo==bar){System.out.println("true");}我尝试用谷歌搜索,但由于缺乏可靠的结果,我相信说这话的人是错误的,但我确实找到了各种论坛帖子(likethisone),似乎表明他是正确的。但是那个帖

c# - 调用 GC.SuppressFinalize(this) 时是否存在不使用 "this"的用例?

我刚刚实现了Dispose模式,当我刚刚键入GC.SuppressFinalize(this)行时,我想知道是否有使用以外的东西的用例this作为方法的参数。这是典型的模式:publicvoidDispose(){Dispose(true);GC.SuppressFinalize(this);//righthere}用this以外的东西调用GC.SuppressFinalize()是否有意义?publicvoidDispose(){Dispose(true);GC.SuppressFinalize(foo);//shouldthiseverhappen?}

javascript - 获取 GC,在通过 webpack 捆绑时处理内存不足错误

将我的项目与webpack捆绑在一起时出现以下错误。当我只有几个block(拆分)点(require.ensure点)时它运行正常,但是当我增加拆分点时出现错误。124541ms:Mark-sweep1379.0(1457.1)->1378.9(1457.1)MB,891.6/0ms[allocationfailure][GCinoldspacerequested].125398ms:Mark-sweep1378.9(1457.1)->1378.9(1457.1)MB,857.0/0ms[allocationfailure][GCinoldspacerequested].126289m

java - 我的应用程序一直在运行 Full GC!

我是性能调整应用程序和了解GC工作原理的新手,所以可能会问同一个问题一百万次!问题是2到3周前,不知何故,我的Web应用程序时不时地开始崩溃。查看日志,推断是由于OOM错误而崩溃:Causedby:java.sql.SQLException:java.lang.OutOfMemoryError:Javaheapspaceatcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)atcom.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)atcom.my

一种KV存储的GC优化实践

一、背景介绍当前公司内部没有统一的KV存储服务,很多业务都将Redis集群当作KV存储服务在使用,但是部分业务可能不需要Redis如此高的性能,却承担着巨大的机器资源成本(内存价格相对磁盘来说更加昂贵)。为了降低存储成本的需求,同时尽可能减少业务迁移的成本,我们基于TiKV研发了一套磁盘KV存储服务。1.1架构简介以下对这种KV存储(下称磁盘KV)的架构进行简单描述,为后续问题描述做铺垫。1.1.1系统架构磁盘KV使用目前较流行的计算存储分离架构,在TiKV集群上层封装计算层(后称Tula)模拟Redis集群(对外表现是不同的Tula负责某些slot范围),直接接入业务Redis客户端。图1:

c# - MonoTouch 异常 : Selector invoked from objective-c on a managed object of type that has been GC'ed

我在我的MonoTouch应用程序中遇到了这个异常,我似乎无法修复它。我已经尝试了大约6个小时,但一直没有成功。我对这个异常的理解是,一个对象正在被MonoTouch引用(或试图被引用),但是垃圾收集已经处理掉了它。因此,它希望使用我尚未在类中设置的构造函数,使用指针再次构建对它的引用。最初我认为添加该构造函数就足够了,直到我做了一些研究并意识到它充其量只是一个临时绷带。我发现奇怪的是,据我所知,我持有对所有内容的引用。我什至有点过火了,开始为不一定需要保留的东西创建成员变量来trycatch异常,但仍然一无所获。错误发生在我加载ViewController、触发将新ViewContr

java - Hadoop 中的 Mapreduce 在使用超过 200MB 的文件时会超出 GC 开销限制

我正在Hadoop多节点集群(2.4.1)上运行Mapreduce代码。当我尝试使用大小为200MB和200MB的2个输入文件运行时,出现错误GCoverheadlimitexceeded。当我使用非常小的文件时,它运行完美并得到正确的输出。我的目标是比较第一个文件中的每个流量记录和第二个文件中的每个流量记录并计算距离,然后取10个最大值并根据这10个最大值输出到reducer。值(value)观。两个文件中的示例流记录-194.144.0.27|192.168.1.5|0.0.0.0|0|0|2|104|1410985350|1410985350|51915|51413|6|6几张快

hadoop - 如何为 Apache Hadoop NameNode 启用 GC 日志记录,同时防止日志文件覆盖和限制磁盘空间使用

我们最近决定在多个集群(具体版本各不相同)上为HadoopNameNode启用GC日志记录,以帮助调查与NameNode相关的内存和垃圾收集问题。我们希望集群中的所有NameNode(事件和备用或主要和次要)都这样做。我们还想避免两个我们知道可能会发生的问题:当NameNode因任何原因重启时覆盖日志文件日志使用过多的磁盘空间,导致磁盘被填满当为进程启动JavaGC日志记录时,它似乎会替换任何具有相同名称的文件的内容。这意味着除非您小心,否则您将丢失GC日志记录,也许在您更有可能需要它的时候。如果您让集群运行足够长的时间,日志文件将填满磁盘,除非进行管理。即使GC日志记录目前不是很多,