- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我创建了一个类 Main,其中包含如下所示的 main 方法:
public class Main {
public static void main(String[] _args) {
System.out.println("free:" + Runtime.getRuntime().freeMemory()
+ ". max:" + Runtime.getRuntime().maxMemory());
}
}
然后我使用 -Xms2m 和 -Xmx2m 运行该类。输出如下:
free:2984840. max:7471104
然后,我的问题是,如果一兆字节是 1048576 字节,那么显示的可用内存不是 -Xms 中设置的 2 兆字节。当我将 -Xms 选项增加到 3m 时,它显示了额外的兆字节空闲。任何人都可以解释发生了什么,.?
-Xmx 选项会出现不同的情况,当我将其增加到 3m、4m 和 5m 时,最大值继续显示 7471104。大约为 71.44m。我不太明白这两个选项是如何工作的。
这是我设置 -Xms3m 和 -Xmx6m 时打印的内容
free:4033416. max:7471104
任何人都可以帮忙吗?
谢谢:)
注释:我正在使用 Win7 x64 和 Java 1.6 update 35。
最佳答案
JVM 在如何分配内存方面有限制,但并不明显。这意味着它仅将您提供的尺寸作为提示,并将尽可能严格地遵循。对于非常小的内存大小,这些差异更加显着,但即使您要求 20 GB,也不会精确到 20 GB 字节。
关于Java -Xms 和 -Xmx 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669608/
我正在尝试为我的应用添加 G+H 解决方案。我已经完成了从 HMS 工具包的转换。但是在转换之后,它给了我关于 xms 导入的错误,它也给了我关于 无法解析配置 ':classpath' 的所有工件。
当我增加 tomcat 上的 -Xms 值时,内存使用(来自 free -m 命令)不会相应改变。下面的示例表明,将其值增加 200MB 只会影响内存使用 ~85MB。 ...usr/lib/jvm/
据我了解,-Xms 和-Xmx 用于指定java 程序的最小和最大堆大小。根据我的理解,如果我们不指定任何选项,JVM 可以工作,即堆大小可以由 JVM 本身管理。 所以,如果我们想限制最大堆大小,我
设置 -Xms 参数有什么好处,例如,初始内存更大,然后默认计算一个(在我的情况下为 64 MB,根据 Java GC 调整: http://java.sun.com/javase/technolog
托管一些 WAR 应用程序的 Ubuntu Server 收到一些堆错误消息,如下所示。该服务器运行 tomcat8 并且运行良好,现在并且没有任何更改代码端服务器出现错误并且 Tomcat 停止。
我正在使用 ${JAVA_HOME}/java -Xms512m 我收到一个错误: --------------------------------------------------- JVMJ9G
我执行以下命令: java -Xms1024M -Xmx1024M mypackage.MyClass 我期望 JVM 立即捕获资源,但实际上我的资源管理器显示 JVM 捕获了 7.2M。 有谁知道是
我有用于 IBM MQ XMS 的发送方和接收方控制台应用程序。发送方填充队列,接收方使用接收方法使队列管理器出队。我正在使用带有 bool 值的 while 循环来继续运行接收器,这样只要队列接收器
对于字符串“aa\nbb\ncc”,我想从左边的最后一个字母到第一个换行符(“a”)到多行字符串的末尾进行匹配,并期望 "aa\nbb\ncc" =~ qr/( . $ .+ )/xms匹配 a\nb
我有一个应用程序使用 WebSphere MQ 通过 WebSphere 将数据发送到云中的数据中心。部分功能是,如果服务器端订阅者检测到 30 分钟内未收到消息,则线程暂停 5 分钟,并删除连接。当
我有一个 XMS MQ 客户端应用程序,它从一系列 MQ 端点提取消息。有某些原因代码可以使进程继续,而对于某些原因代码应该中止。例如,一个端点的 MQRC_Q_MGR_NOT_AVAILABLE 2
运行以下主要方法: public class Test { public static void main(String[] args) { System.out.printl
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: How is the default java heap size determined? 我很好奇如果我不
我有以下 Java 程序,我认为它不需要太多 Java 堆: sleep 测试.java public class SleepTest { public static void main(St
我创建了一个类 Main,其中包含如下所示的 main 方法: public class Main { public static void main(String[] _args) {
我有一个 .JAR 显然占用了太多内存,并抛出异常“Java 堆空间”(或类似的东西)。 所以我尝试像这样通过 CMD 运行 .JAR: C:\MyFolder>javaw -jar MyJar.ja
如果我将初始堆大小设置得相对较低(例如 -Xms128m)并将最大堆大小设置得非常高(-Xmx4g),我是否会期望对 Tomcat 性能产生负面影响?另外,将 -XX:MaxPermSize 设置为与
我知道JVM进程的-Xms标志是为了让JVM进程使用特定数量的内存来初始化它的进程。并且关于 Java 应用程序的性能,通常建议在启动应用程序时为 -Xms 和 -Xmx 设置相同的值,例如 - Xm
通常我设置-Xms512m和 -Xmx1g这样当 JVM 启动时,它会分配 512MB 并根据需要逐渐将堆增加到 1GB。但我看到这些值设置为相同的说 1g在专用服务器实例中。将两者设置为相同的值有什
我编写的 java 应用程序遇到了导致硬件性能问题的问题。问题(我相当确定)是我运行该应用程序的一些机器只有 1GB 内存。当我启动 java 应用程序时,我将堆大小设置为 -Xms 512m -Xm
我是一名优秀的程序员,十分优秀!