小编roo*_*eee的帖子

为什么JVM不在Windows x86上发出预取指令

正如标题所述,为什么OpenJDK JVM不会在Windows x86上发出预取指令?请参阅OpenJDK Mercurial @http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/c49dcaf78a65/src/os_cpu/windows_x86/vm/prefetch_windows_x86.inline.hpp

inline void Prefetch::read (void *loc, intx interval) {}
inline void Prefetch::write(void *loc, intx interval) {}
Run Code Online (Sandbox Code Playgroud)

没有评论,我发现除了源代码之外没有其他资源.我问,因为它对Linux x86这样做,请参阅http://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/c49dcaf78a65/src/os_cpu/linux_x86/vm/prefetch_linux_x86.inline.hpp

inline void Prefetch::read (void *loc, intx interval) {
#ifdef AMD64
  __asm__ ("prefetcht0 (%0,%1,1)" : : "r" (loc), "r" (interval));
#endif // AMD64
}

inline void Prefetch::write(void *loc, intx interval) {
#ifdef AMD64

  // Do not use the 3dnow prefetchw instruction.  It isn't supported on em64t.
  //  __asm__ ("prefetchw (%0,%1,1)" : : "r" (loc), "r" (interval));
  __asm__ …
Run Code Online (Sandbox Code Playgroud)

java x86 assembly jvm jvm-hotspot

8
推荐指数
2
解决办法
356
查看次数

如何强制执行lamda定义的新实例

Java-Spec保证将给定的lamda定义(例如() -> "Hello World")编译/转换为仅一个实现类(每个定义,并非每个“看起来”都相同的事件)。

有什么方法可以强制java-compiler / jvm生成新的lamda定义,而不是共享一个通用的lamda定义?我目前正在实现一个将多个功能部件编织到BiFunction中的库,该库由于Java-spec提供的保证而遭受了大形调用站点的困扰(编辑:我已纠正:Java-Spec不保证单个共享class-当前的参考实现会执行此操作):

        public <In, Out, A> BiFunction<In, Out, Out> weave(
             Function<? super In, A> getter,
             BiConsumer<? super Out, ? super A> consumer
        ) {
            return (in, out) -> {
                consumer.accept(out, getter.apply(in));
                return out;
            };
        }
Run Code Online (Sandbox Code Playgroud)

通过此代码生成的每个lamda都共享相同的lamda定义,因此大多是不可内联的/不可优化的。

java jvm inlining

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

为什么Gradle缓存多次包含依赖项?

我们正在通过 Gitlab Pipeline Jobs 将 Gradle 缓存作为 ZIP 上传到 S3。解压其中一个 ZIP 文件(仅包含该.gradle文件夹)表明,许多依赖项多次包含完全相同的版本:1x injars-9和 1x in modules-2在此输入图像描述

为什么会发生这种情况以及如何避免这种情况?因此,我们的 CI 缓存比实际需要的大 20-30%,特别是对于像 Kotlin 编译器这样的大依赖项: 在此输入图像描述

JAR 之间的大小差异可归因于 JAR 文件压缩打开或关闭,它们在内容方面是相同的。

关于文件夹结构的官方解释没有.gradle帮助。

gradle gradle-dependencies

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

标签 统计

java ×2

jvm ×2

assembly ×1

gradle ×1

gradle-dependencies ×1

inlining ×1

jvm-hotspot ×1

x86 ×1