草庐IT

收集箱

全部标签

java - 使用 Java 8 流收集到 Guava 的 ListMultiMap

我试图在不使用forEach操作的情况下使用java8将数据收集到ListMultiMap中。如果我用Java7编写代码,它将是这样的:ListMultimapresult=ArrayListMultimap.create();for(Statestate:states){for(Citycity:state.getCities()){result.put(state.getName(),city.getName());}}我在网上找到一个website讨论了创建您自己的收集器以在诸如此类的场景中使用。我将此实现用于收集器。然后我写了下面的代码:ListMultimapresult=s

java - 对象何时符合垃圾收集条件?

在下面的代码中,假定方法已被调用。myObject最初引用的对象在什么点/行符合垃圾收集条件?classTest{privateObjectclassObject;publicvoidamethod(){ObjectmyObject=newObject();classObject=myObject;myObject=null;}}如果classObject或amethod具有public、protected、default或static的访问修饰符,它会影响对象有资格进行垃圾收集的时间点吗?如果是,会受到怎样的影响?我的第一个想法是当测试对象符合垃圾收集条件时,对象符合垃圾收集条件。不

java - G1 垃圾收集器是否默认启用了字符串去重功能?

JEP192:StringDeduplicationinG1在Java8Update20中实现添加了新的字符串重复数据删除功能:ReducetheJavaheaplive-datasetbyenhancingtheG1garbagecollectorsothatduplicateinstancesofStringareautomaticallyandcontinuouslydeduplicated.JEP页面提到命令行选项UseStringDeduplication(bool)允许启用或禁用重复数据删除功能。但是JEP页面并没有显示默认值。➠在与Java8和Java9捆绑在一起的G1垃

具有映射值的 Java 8 Collectors.groupingBy 将收集结果设置为同一组

示例中使用的对象来自包org.jsoup.nodesimportorg.jsoup.nodes.Attribute;importorg.jsoup.nodes.Element;importorg.jsoup.select.Elements;我需要按键对属性进行分组,结果值为Set.OptionalbuttonOpt=...;Map>stringStringMap=buttonOpt.map(button->button.attributes().asList().stream().collect(groupingBy(Attribute::getKey,mapping(attribut

java - 我怎样才能看到java正在使用哪个垃圾收集器

Java虚拟机支持多种垃圾收集策略。这article解释它们。现在我想知道我的应用程序正在使用哪种(自动选择的)策略,有什么办法可以让JVM(1.6版)打印这些信息吗?编辑:JVM检测它是处于客户端模式还是服务器模式。所以真正的问题是我如何才能看到哪些已被检测到? 最佳答案 jmap-heap打印堆摘要。打印使用的GC算法、堆配置和生成明智的堆使用情况。http://java.sun.com/javase/6/docs/technotes/tools/share/jmap.html 关于

Java 垃圾收集器 - 无法定期正常运行

我有一个不断运行的程序。通常情况下,它似乎是垃圾收集,并保持在大约8MB的内存使用量以下。但是,每个周末,除非我明确调用它,否则它拒绝垃圾收集。但是,如果它接近最大堆大小,它仍然会进行垃圾收集。然而,这个问题被注意到的唯一原因是它实际上在一个周末因内存不足而崩溃,即它必须达到最大堆大小,并且没有运行垃圾收集器。下图(clicktosee)是程序一天内存使用情况的图表。在图表的两侧,您可以看到程序内存使用的正常行为,但第一个大峰值似乎是在周末开始的。这个特殊的图是一个奇怪的例子,因为在我对垃圾收集器进行显式调用后,它成功运行,但随后它爬回最大堆大小并成功地自行收集了两次垃圾。这里发生了什

java - 使用收集器将列表转换为对象映射 - Java

如何使用收集器将DAO列表转换为Map>daoList看起来像这样:[0]:id="34234",team="gools",name="bob",type="old"[1]:id="23423",team="fool",name="sam",type="new"[2]:id="34342",team="gools",name="dan",type="new"我想对“团队”属性进行分组,并为每个团队创建一个列表,如下所示:"gools":["id":34234,"name":"bob","type":"old"],["id":34342,"name":"dan","type":"new"

java - 在实践中,JVM如何收集SoftReferences?

我有两个单独的缓存在JVM中运行(一个由第三方库控制),每个缓存都使用软引用。我希望JVM在库控制的缓存之前先清除受控的缓存。SoftReferencejavadoc指出:Allsoftreferencestosoftly-reachableobjectsareguaranteedtohavebeenclearedbeforethevirtualmachinethrowsanOutOfMemoryError.Otherwisenoconstraintsareplaceduponthetimeatwhichasoftreferencewillbeclearedortheorderinwh

java - 除了互斥锁或垃圾收集之外还有哪些机制可以减慢我的多线程 Java 程序的速度?

问题我有一段java代码(JDK1.6.0._22,如果相关)实现了一个无状态、无副作用且没有互斥锁的函数。但是它确实使用了大量内存(我不知道这是否相关)。过去我访问过Sun实验室并收集了标准的“性能与线程数”曲线。由于此函数没有互斥锁,因此它有一个漂亮的图形,尽管垃圾收集随着线程数量的增加而启动。经过一些垃圾收集调整后,我能够使这条曲线几乎平坦。我现在正在英特尔硬件上做同样的实验。硬件有4个CPU,每个8个内核和超线程。这给出了64个availableProcessors()。不幸的是,“性能与线程数”的曲线对于1、2、3个线程和3个线程的上限很好地缩放。在3个线程之后,我可以在任务

java - 局部变量的垃圾收集

我是一名进入Java世界的C++程序员。而且我无法摆脱不得不让Java垃圾收集器进行清理的糟糕感觉。例如,此代码在Java中的行为如何?publicvoidmyFunction(){myObjectobject=newmyObject();object.doSomething();}myFunction()退出时局部变量对象会被删除吗?我是否必须在退出前将对象设置为null,否则它会超出范围并被GC删除吗?或者,在最坏的情况下,它会像在C++中那样泄漏吗? 最佳答案 它将在不再使用后某个时候被垃圾回收。我相信在当前的Java实现中,