问题标签 [jvm-arguments]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
13157 浏览

java - 如何使用 JVM 参数为 java.util.Calendar 指定 firstDayOfWeek

我正在尝试将 java.util.Calendar 的默认 firstDayOfWeek 从 SUNDAY 更改为 MONDAY。是否可以通过JVM配置而不是添加这段代码来实现这一点?

0 投票
3 回答
8233 浏览

java - 将 JVM 参数放入文件中以在运行时获取

我正在构建我当前应用程序的一个 jar,它需要设置几个 JVM 参数。

有没有办法在文件中而不是在命令行中设置这些 JVM 参数?

我已经进行了一些搜索,看起来我可以使用 java.properties 文件做一些事情,可能是通过设置 java-args,但我找不到任何对格式的引用。

我在吠叫错误的树吗?

这可能吗?如果可以,怎么办?

如果没有,还有其他方法可以指定 JVM 参数吗?

0 投票
5 回答
74035 浏览

java - 在不使用调试参数启动 JVM 的情况下调试 java 应用程序

通常要将调试器附加到正在运行的 jvm,您需要使用以下参数启动 jvm:

现在如果我想调试一个没有在调试模式下启动的进程,我该怎么办?

当生产系统(即在没有调试参数的情况下启动)出现“随机”(我松散地使用该术语)错误时,就会出现这种情况。所以我无法使用适当的参数重新启动 jvm,因为没有人知道如何再次重现该错误。在这种情况下是否无法附加到JVM?

只是为了澄清不可能使用像 jdb 这样的工具来附加到已经运行的 JVM,除非它们是在调试模式下启动的

来自 JVM 手册页

使用 jdb 的另一种方法是将它附加到已经运行的 Java VM。要使用 jdb 调试的 VM 必须使用以下选项启动:

0 投票
7 回答
56000 浏览

java - 大型应用程序的 JVM 性能调优

默认的 JVM 参数对于运行大型应用程序不是最佳的。任何在实际应用程序上对其进行调整的人的见解都会有所帮助。我们在 32 位 windows 机器上运行应用程序,默认使用客户端 JVM 。我们添加了 -server 并将 NewRatio 更改为 1:3(更大的年轻一代)。

您尝试过并发现有用的任何其他参数/​​调整?

[更新] 我说的特定类型的应用程序是很少关闭的服务器应用程序,至少占用 -Xmx1024m。还假设应用程序已经过概要分析。我只在JVM 性能方面寻找一般指导方针。

0 投票
7 回答
14014 浏览

java - 使用 UseConcMarkSweepGC 减少 JVM 暂停时间 > 1 秒

我在具有 16Gb RAM、8 核处理器和 Java 1.6 的机器上运行内存密集型应用程序,所有这些都在 CentOS 版本 5.2(最终版)上运行。确切的 JVM 详细信息是:

我正在使用以下命令行选项启动应用程序:

我的应用程序公开了一个 JSON-RPC API,我的目标是在 25 毫秒内响应请求。不幸的是,我看到延迟达到并超过 1 秒,这似乎是由垃圾收集引起的。以下是一些较长的示例:

这些垃圾收集事件中的每一个都伴随着延迟的 API 响应,其持续时间与所示垃圾收集的长度非常相似(在几毫秒内)。

以下是一些典型的例子(这些都是在几秒钟内产生的):

问题是我认为 UseConcMarkSweepGC 会避免这种情况,或者至少让它变得非常罕见。相反,超过 100 毫秒的延迟几乎每分钟发生一次或更多(尽管超过 1 秒的延迟相当罕见,可能每 10 或 15 分钟一次)。

另一件事是,我认为只有 FULL GC 会导致线程暂停,但这些似乎不是 full GC。

可能需要注意的是,大部分内存都被使用软引用的 LRU 内存缓存占用。

任何帮助或建议将不胜感激。

0 投票
3 回答
3251 浏览

java - 无法通过 JNI 加载 JVM 时如何收到错误消息?

我想检索一条错误消息,解释为什么 jvm 无法加载。从此处提供的示例中:

http://java.sun.com/docs/books/jni/html/invoke.html

我提取了这个例子:

在我的具体情况下,我在 vm_args 中提供了无效的参数,并希望看到我在命令行上得到什么:“无法识别的选项:-foo=bar”

在进一步测试中,jvm 似乎正在将我想要的消息放入 stdout 或 stderr。我相信我需要捕获 stdout 和 stderr 才能得到我正在寻找的错误(当然,除非有更简单的方法)。我正在用 C++ 编码,所以如果有人可以展示一种将错误捕获到字符串流中的方法,那将是理想的。

谢谢,兰迪

0 投票
2 回答
19646 浏览

java - 如何向正在运行的 Linux 进程发送 Ctrl-Break?

我正在调试在 Sun 的 JDK 1.4.2_18 上运行的应用程序中的内存泄漏。这个版本似乎支持命令行参数 -XX:+HeapDumpOnCtrlBreak,这可能会导致 JVM 在遇到控制中断时转储堆。如何将其发送到 Linux 机器上的后台进程?看来 kill 信号是应该起作用的方式,但是我 kill -l 没有报告任何明显是 Ctrl-Break 的东西,至少在我的 Ubuntu 机器上是这样。

更新:我用 Sun JDK 1.4.2_18 测试了 Kill -3(_14 是第一个以这种方式转储堆的),并且它有效。创建了一个堆转储文件,并且该进程仍在运行。

0 投票
5 回答
108367 浏览

java - 永久增加java堆大小?

有没有办法可以在我自己的计算机上为 jvm 设置默认堆大小?我想将其设置为 1g,因为我总是在运行自定义程序,这些程序总是在默认 jvm 大小中达到超额点。

我只是不想每次从命令行运行我的 java 应用程序时都要记住输入 -XmX1g ......

必须有一种管理方式才能做到这一点吗?

0 投票
8 回答
188755 浏览

java - Java 的 -Xms 和 -Xmx 选项的速度权衡

鉴于这两个命令

A:

乙:

我有两个问题:

  1. 由于命令 A 为其参数保留了更多内存,所以 A 会比 B 运行得更快吗?
  2. 对我的程序的运行过程和输出有何影响-Xmx-Xms
0 投票
6 回答
12862 浏览

java - JVM -XX:+StringCache 参数?

我最近在阅读 JRE 6 [ Java VM Options ] 中可用的所有 JVM 参数,并看到了这个:

-XX:+StringCache :启用常用分配字符串的缓存。

现在我一直认为 Java 保留了一个实习(正确的词?)字符串池,并且在使用文字进行字符串连接之类的操作时,它不是创建新对象,而是将它们从该池中拉出。有没有人使用过这个论点,或者可以解释为什么需要它?

编辑:我试图运行一个基准测试,看看这个参数是否有任何影响,并且无法让 Sun JVM 识别它。这是与:

所以我不确定这个论点是否有效。