java - 在 Karaf 上设置 4096MB 以上的堆内存

标签 java jvm apache-karaf karaf

我正在使用需要大量内存的 Java 应用程序,我希望能够将 JVM 的最大可用内存设置为 4096MB 以上的值,例如 8192MB。

我尝试使用以下参数:

wrapper.java.maxmemory

这似乎在 4096MB 阈值下工作正常,但不高于(它停留在 3.7GB 左右)。

我使用的是 64b JVM。

阻止我超过 4096MB 的代码片段在哪里?

最佳答案

不幸的是,wrapper.java.maxmemory 的限制在 Karaf(wrapper.c,v3.2.3)中使用的版本中是硬编码的:

/* Maximum JVM memory */
maxMemory = getIntProperty(properties, "wrapper.java.maxmemory", 0);
if (maxMemory > 0) {
    maxMemory = __min(__max(maxMemory, initMemory), 4096);  /* initMemory <= n <= 4096 */
    if (strings) {
        strings[index] = malloc(sizeof(char) * (5 + 4 + 1));  /* Allow up to 4 digits. */
        sprintf(strings[index], "-Xmx%dm", maxMemory);
    }
    index++;
}

你应该使用类似wrapper.java.additional.1 = -Xmx8196m

关于java - 在 Karaf 上设置 4096MB 以上的堆内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35368821/

相关文章:

java - 如何为 JTree 中的特定节点调用 DefaultTreeCellRenderer

java - 将文件转换为十六进制转储

java - 为什么我的代码会抛出 ClassNotFoundException?

.net - 我在哪里设置 SONAR_RUNNER_OPTS?

java - 想要在安装1.7/1.8时在1.6中执行jar

Android java.exe 以非零退出值 1 结束

java - OSGI - 将实体拆分为多个包

Java Resultset 和 AbstractTableModel 更新 JTable

java - 如果我离开 karaf 控制台,为什么 FUSE ESB (ServiceMix) 4.3 在 linux 上关闭?

java - 在哪里可以找到实现 org.osgi.service.log.LoggerFactory 服务的包?