当前位置: 首页 > 面试题库 >

如何减少jvm使用的线程数

祁嘉木
2023-03-14
问题内容

我正在以下Java版本上运行单线程Java应用程序

java version "1.7.0_67"
Java(TM) SE Runtime Environment (build 1.7.0_67-b01)
Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)

-XX:+UseSerialGC启用该选项。仍然在启动应用程序时,使用监视系统时看到多个线程正在启​​动htop。我想尽可能减少启动的进程数,因为我有一个用例,其中涉及运行该应用程序的多个实例,这将达到我正在运行的系统上允许的最大进程数的顶峰。上。除了-XX:+UseSerialGC可以用来减少启动线程数之外,是否还有其他jvm选项?


问题答案:

除了-XX:+UseSerialGC禁用并行或并发GC外,还有以下选项可减少JVM线程数:

  • -XX:CICompilerCount=1 只留下一个JIT编译器线程。
  • -XX:+ReduceSignalUsage禁用信号调度程序线程。例如,JVM将不会处理SIGQUIT来转储线程。
  • -XX:+DisableAttachMechanism 阻止启动AttachListener线程。

从理论上讲,可以禁用更多线程(例如,服务线程和VM定期任务线程),但这需要修补JVM。



 类似资料:
  • 我有一个Java程序可以在Solaris 10 X86上运行,具有2GB物理内存和2GB交换。 该程序在64位Linux中运行良好,仅消耗约450MB内存。 然而,当它在Solaris中运行时,它总是报告OutOfMemoryError,我注意到在错误发生之前,它正试图使用 那么为什么JVM会尝试使用那么多虚拟内存呢?有没有办法告诉JVM不要使用那么多虚拟内存? 谢谢你。 编辑: 谢谢大家的意见!

  • 我正在做一个项目,我有两个线程一起运行。这个项目是一个模拟银行,本质上,我们有一个存款线程和一个取款线程。我有一个存款线程经常运行的问题,导致银行账户的余额上升。(我希望现实生活中也有这个问题。)如何减少一个线程运行的时间? 这是我的主要课程: 以下是取款和存款线程类: 最后她是交易类: 我试图让线程在达到锁定条件之前进入睡眠状态,但不幸的是,它不起作用。

  • 这里和这里都有类似的问题,但对JVM参数的更改都没有让我找到相同的解决方案。我只是想减少JVM未使用的堆大小,以便它更接近实际使用情况(将其释放给操作系统)。我一直在使用YourKit来分析内存使用情况,它通常如下所示: 我正在运行智能Ij IDEA社区版64位,在Windows 7 64位,8 GB RAM上运行。我已经编辑了.文件在这里找到: 与上述链接中提到的建议。第一个链接的答案实际上是错

  • 问题内容: 我正在具有16Gb RAM,8核处理器和Java 1.6的计算机上运行内存密集型应用程序,这些计算机均在CentOS 5.2版(最终版)上运行。确切的JVM详细信息是: 我正在使用以下命令行选项启动该应用程序: 我的应用程序公开了JSON-RPC API,我的目标是在25毫秒内响应请求。不幸的是,我看到延迟可能超过1秒,这似乎是由垃圾回收引起的。以下是一些较长的示例: 这些垃圾收集事件

  • 问题内容: 我正在开发一个 Java Web应用程序 ,其中包括 一个applet 。该小程序依赖于两个jar文件: JFreeChart(用于在客户端绘制图) -1.7 mb(jar文件的大小) MySqlJdbcConnector(用于将在客户端捕获的数据存储到远程数据库)-. 7 mb(JAR文件的大小) 现在,问题是上述两个jar文件的大小。我的小应用程序jar (myApplet.jar