java - 如何确定应用程序启动时的 Java 堆大小

标签 java memory jvm

我有一个java桌面应用程序,支持一次查看大量数据。为了支持这一点,我使用高 -Xms -Xmx 设置启动应用程序。例如,

-Xms512m -Xmx1024m

我遇到的问题是,根据客户端计算机和当前的使用情况,Java 虚拟机并不总是以如此高的设置启动。解决方案是减小尺寸。

还有其他人遇到过这个问题吗?你是怎么解决的?有没有办法预先确定良好的 -Xms-Xmx 大小?或者有没有办法在应用程序内指定大小而不是在启动时指定大小?

最佳答案

你无法在 Java 代码中确定它,因为那时已经太晚了:它是 JVM 的一个属性,已经被启动了。

您需要执行一些特定于操作系统的操作来确定可用内存并使用适当的参数启动 JVM。例如,在 Linux 上,您可以使用 bash 脚本启动应用程序,该脚本首先检查/proc/meminfo 以确定系统配置,然后启动 Java程序,相应地设置堆大小。

关于java - 如何确定应用程序启动时的 Java 堆大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25899431/

相关文章:

java - API方法可以返回不同的类型,我如何定义返回类型?

java - 无法使用 document.getElementById 获取元素,返回 null

iphone - 当 OpenGL ES (iPhone) 上下文被释放时,纹理缓冲区是否会刷新?

c++ - 如何分配连接的字符串?

java.lang.VerifyError : Stack map does not match the one at exception handler

java - FetchType.LAZY 位于父级的 @OneToMany 上,FetchType.EAGER 位于子级的 @ManyToOne 上

Java 在小程序重新加载时杀死守护线程

android - 如何解决堆空间错误?

Java 程序在 Microsoft Server 上每个用户一个进程

java - 每个 Java 应用程序是否有一个 JVM?