小编the*_*472的帖子

从数组中生成高效的Java 8排序Spliterator

在Java 8中,提供了各种方便的实用程序来从阵列构建高效的Spliterator.但是,没有提供工厂方法来构建带有比较器的Spliterator.显然,Spliterators可以附加比较器; 他们有getComparator()方法和SORTED财产.

图书馆作者如何构建SORTEDSpliterator?

java java-8 spliterator

17
推荐指数
1
解决办法
3026
查看次数

Linux上的线程利用率分析

Linux perf-tools非常适合在CPU周期中查找热点并优化这些热点.但是,一旦某些部件被并行化,就很难发现顺序部件,因为它们占用了大量的墙壁时间,但不一定需要很多CPU周期(并行部件已经烧掉了这些部件).

为了避免XY问题:我的基本动机是在多线程代码中找到顺序瓶颈.并行阶段很容易控制聚合CPU周期统计数据,即使由于amdahl定律,连续阶段占据了时间.

对于java应用程序,使用具有线程利用时间轴的visualvm或yourkit相当容易实现.

yourkit线程时间轴

请注意,它显示了所选范围或时间点的线程状态(可运行,等待,阻塞)和堆栈样本.

如何在Linux上实现与perf或其他原生剖析器相媲美的东西?它不一定是GUI可视化,只是一种查找与它们相关的顺序瓶颈和CPU样本的方法.

linux performance multithreading profiling perf

12
推荐指数
1
解决办法
1059
查看次数

为什么没有IntStream.flatMapToObj()?

我正在尝试做这样的事情:

Stream<Object> stream = IntStream.of(...)
        .flatMapToObj(i -> getStreamOfObjects(i));
Run Code Online (Sandbox Code Playgroud)

不幸的是,IntStream.flatMapToObj()即使在Java 9中也不存在.

  1. 为什么遗漏了?
  2. 什么是推荐的解决方法?

java java-8 java-stream

11
推荐指数
3
解决办法
1123
查看次数

是-XX:+ UseG1GC正确替换-Xincgc?

目前,我们通过添加-Xincgc到java命令来使用增量垃圾收集器.在JDK 8中,不推荐使用此开关.那么什么是它的等效替代品呢?-XX:+UseG1GC

背景:应用程序有一个8GB的堆,并创建了许多短生命对象.我注意到它经常暂停几秒钟来进行垃圾收集.出于好奇,我加入-Xincgc并发现停顿消失了,整体性能提高了~4倍.

不幸的是,我没有找到任何有关-Xincgc触发器的垃圾收集器类型的信息.有CMS(并发标记和扫描)和新G1(垃圾优先).但是我得到了-Xincgc什么?

java garbage-collection g1gc java-8

9
推荐指数
1
解决办法
2万
查看次数

将-XX:+ PerfDisableSharedMem JVM标志设置为false的效果

我被提到这个GC暂停问题 ; 它建议将-XX:+PerfDisableSharedMemJVM标志设置为false.我的问题是当我们设置此标志时会发生什么false,

java garbage-collection jvm

8
推荐指数
1
解决办法
3565
查看次数

如何列出-Xlog的语法和可用标记

OpenJDK 9的新Unified JVM日志记录可以按标签过滤日志,但JEP不提供所有可用标记的列表.如何列出所有可用参数?

jvm java-9

8
推荐指数
1
解决办法
609
查看次数

使用perf查找线程瓶颈并优化挂墙时间

perf record如果核心利用率大致恒定,则使用cpu周期进行采样对于查找优化候选者很有用。但是对于具有多个阶段的并行度不同的代码,计算cpu周期将着重强调并行阶段,同时又不强调会影响墙壁时间的顺序或有限并行度阶段。简而言之,单纯使用perf可能会凸显阿姆达尔定律的错误之

因此,问题是如何找到perf record/ perf report寻找减少墙壁时间的优化候选者,这可能是从并行并行代码中最热的循环到中等并行瓶颈到长单线程阶段的任何东西。

已知的解决方法有一些不足之处:

  • 在单个内核上执行工作负载,从而节省时间?cpu周期
  • 分别分析各个组件

元:这是一个法律约束特定随访到一个更一般的问题

linux performance multithreading profiling perf

7
推荐指数
1
解决办法
119
查看次数

是invokeAll()在java 7中的阻塞调用

ExecutorService executorService = Executors.newSingleThreadExecutor();

Set<Callable<String>> callables = new HashSet<Callable<String>>();

callables.add(new Callable<String>() {
    public String call() throws Exception {
        return "Task 1";
    }
});
callables.add(new Callable<String>() {
    public String call() throws Exception {
        return "Task 2";
    }
});
callables.add(new Callable<String>() {
    public String call() throws Exception {
        return "Task 3";
    }
});

List<Future<String>> futures = executorService.invokeAll(callables);

for(Future<String> future : futures){
    System.out.println("future.get = " + future.get());
}
Run Code Online (Sandbox Code Playgroud)

对于这段代码.我的问题是"是invokeAll()阻塞调用"?我的意思是,当代码运行到invokeAll()行时,我们是否在那里等待所有结果生成?

java concurrency multithreading

5
推荐指数
1
解决办法
2814
查看次数

如何检测在JavaScript中触发垃圾收集的内存分配?

在JavaScript库(铆钉)中查找性能问题时,我发现垃圾收集在运行中发生了三到四次,占用了大约15%的执行时间(使用Chrome DevTools JS Profile).

由于垃圾收集的原因,至少有30个临时功能/对象被创建为潜在候选者的地方.

我想知道是否有办法找到哪些函数负责分配被垃圾收集的内存,所以我可以集中我的性能调优.

我记录了Heap Allocation TimeLine,但它没有区分垃圾收集的内存和仍然保存引用的内存(DevTools doc中没有指向灰色栏)

还记录堆分配配置文件没有运气.

javascript garbage-collection memory-management google-chrome-devtools

5
推荐指数
1
解决办法
358
查看次数

Intellij IDEA长期处理grails应用程序,警告"处理过多的输出"

我是新的Intellij for Grails应用程序,同时运行应用程序执行很多事情,警告"处理输出太多"并需要相对更多的时间来启动服务器.以下是日志屏幕

(AbstractAutowireCapableBeanFactory.java:539)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:687)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:762)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
    at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:403)
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
    at org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener.initWebApplicationContext(GrailsContextLoaderListener.java:71)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:106)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4992)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5490)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalArgumentException: Can not copy a non-root Method
    at java.lang.reflect.Method.copy(Method.java:151)
    ... 57 more
Jun 20, 2015 11:53:02 PM org.springsource.loaded.jvm.JVM copyMethod
SEVERE: Problems copying method. Incompatible JVM?
java.lang.reflect.InvocationTargetException
    at sun.reflect.GeneratedMethodAccessor56.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at …
Run Code Online (Sandbox Code Playgroud)

grails jvm intellij-idea

4
推荐指数
1
解决办法
808
查看次数