Java GC 线程瓶颈在实践中?

标签 java multithreading garbage-collection jython parallel-processing

Java 的并行收集 GC 对多线程环境的优化程度如何?我编写了一些多线程 Jython 代码,大部分时间都用于调用 Java 库。根据我运行程序时使用的选项,库调用要么在后台进行大量分配,要么几乎不进行分配。当我使用需要大量堆分配的选项时,我无法让代码扩展到超过 6 个内核。当我使用不需要大量分配的选项时,它至少可以扩展到 20。这与 GC 瓶颈相关的可能性有多大,因为我使用的是 Sun VM、并行 GC 和 Jython作为我的胶水语言?

编辑:澄清一下,我不一定会想到对 Java 老手来说显而易见的东西,因为我几乎从不使用 Java/JVM 语言。我的大部分编程都是用 D 和 Python 的旗舰 CPython 实现完成的。我正在将 JVM 和 Jython 用于一个小型的一次性项目 b/c 我需要访问 Java 库。

最佳答案

由于您的问题是关于 GC 瓶颈的:您可以通过打开 GC 日志记录并检查日志来消除这种可能性 - 如果有大量 GC 事件且暂停时间较长,您可以证实/否定这一理论。 (但是,在您描述的情况下,我猜这不是 GC 问题)。

关于Java GC 线程瓶颈在实践中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3390531/

相关文章:

java - 允许系统接受错误 PIN 码的最大次数

c++ - 使用方法指针启动线程

c# - 在c#中,如何检查线程池中的线程是工作线程还是I/O线程?

Python 线程挂起并且不关闭

java - 用于纯服务器端 war-packaged Java EE 6 应用程序的 Maven 原型(prototype)?

java - 获取一个 ConcurrentModificationException 聊天程序

c++ - 什么时候需要在 Ruby C 扩展中声明 volatile VALUE?

c# - 使用委托(delegate)会产生垃圾吗

javascript - 如果两个 JavaScript 对象数组共享元素,当一个数组不再被引用时,所有非共享内存是否都会被垃圾回收?

java - "Location is required"加载FXML文件时出现异常