小编Rub*_*ons的帖子

说明新的JVM内存参数的含义InitialRAMPercentage和MinRAMPercentage

参考:https : //bugs.java.com/bugdatabase/view_bug.do?bug_id=8186315

我真的很难找出MinRAMPercentage的功能,尤其是与InitialRAMPercentage相比。

我假设InitialRAMPercentage设置了启动时的堆数量,MinRAMPercentage和MaxRAMPercentage设置了允许JVM收缩/增长到的堆的上下限。

显然不是这样。当我启动JVM(使用UseContainerSupport,具有这些新的内存设置参数)时,如下所示:

java -XX:+UseContainerSupport -XX:InitialRAMPercentage=40.0 -XX:MinRAMPercentage=20.0 -XX:MaxRAMPercentage=80.0 -XX:+PrintFlagsFinal -version | grep Heap
Run Code Online (Sandbox Code Playgroud)

设置InitialHeap和MaxHeap,没有找到“最小堆大小”值;因此,该MinRAMPercentage似乎从未被使用过。

超级困惑,显然我不是唯一的一个。正如我在这里这里所收集的那样,OpenJ9帅哥似乎也没有完全解析这些选项的意图。他们似乎选择不实施MinRAMPercentage afaics。

因此:设置MinRAMPercentage的实际预期用途和效果是什么?

java jvm docker

20
推荐指数
1
解决办法
6174
查看次数

Neo4J社区版打电话回家?

在处理我们的Neo4J图形应用程序并为根记录器设置调试日志记录时,我遇到了以下统计信息,例如消息:

[DEBUG] HttpURLConnection: sun.net.www.MessageHeader@537f294a7 pairs: {GET /?totalmem=12758278144+propids=0+os.arch=amd64+edition=community+dist=unknown+source=maven+numprocs=4+mac=005056c00008+revision=2.1.5:2.1-maint:529/45c3cc04946c2b0e243e48c8252e40cb85931744+tags=spring,sdn,web+os.version=6.3+reg=unreg+relids=0+v=2.1.5+heapsize=47775896+os.name=Windows_8.1+id=641ca9a78ddc53ae+labelids=3+nodeids=0+p=-1 HTTP/1.1: null}{Cache-Control: no-cache}{Pragma: no-cache}{User-Agent: Java/1.8.0_51}{Host: 52.0.233.188}{Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2}{Connection: keep-alive}
[DEBUG] HttpURLConnection: sun.net.www.MessageHeader@167dbd419 pairs: {null: HTTP/1.1 200 OK}{Server: nginx/1.6.2}{Date: Sun, 30 Aug 2015 10:05:40 GMT}{Content-Type: text/html}{Content-Length: 164}{Last-Modified: Fri, 01 Jun 2012 09:48:29 GMT}{Connection: keep-alive}{ETag: "4fc88fed-a4"}{Accept-Ranges: bytes}
Run Code Online (Sandbox Code Playgroud)

我有点惊讶,因为我没有在Neo4j中配置任何东西,告诉它与互联网上的某个Web服务器共享我的机器配置.

顺便说一下,我知道它是neo4j,因为版本号(2.1.5)和社区版关键字,以及ip号52.0.233.188,它解析为亚马逊aws dns条目,但将自己标识为udc.neo4j.org.

neo4j

5
推荐指数
1
解决办法
216
查看次数

在JProfiler中,为什么我的对象不显示在All Objects视图中?

我是JProfiler的新手.我创建了一个非常简单的测试应用程序.这是一个带有main方法的Main.java:

package com.example;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        Example e = new Example(); //Gets gc'ed?
        System.out.println(e.getMessage());
        System.in.read();
        System.exit(0);
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,我暂停直到按键.这样我确定主要范围不会结束,直到我按下一个键,所以我希望e存在而不是垃圾收集(如果这个假设不正确,请纠正我).Example类:

package com.example;

public class Example {
    public String getMessage() {
        String testString = "This is the test string. Press a key to exit.";
        return testString;
    }
}
Run Code Online (Sandbox Code Playgroud)

我使用JProfiler Eclipse插件启动上述应用程序.我创建了一个基于Full Instrumentation配置文件的会话; 我删除了Java EE和JDBC特定的探测器,剩下的就是默认值.

现在,当探查器启动时,我转到所有对象视图,我希望找到com.example.*类,但我找不到; 为什么会这样?

好吧,也许我只能在使用其他视图时找到这些对象,比如Allocation调用树,所以我使用视图中的按钮启用Allocation Recording(默认情况下禁用).它要求我点击之后计算分配,弹出一个对话框.我接受了默认值,并且我看到了一个空的视图,可以自动更新永恒的空虚.

那么我试试Heap Walker.它要求我先进行转储.我得到一个对话框,为我提供"选择记录的对象"的选项,默认情况下未选中.我将它保留为默认值,并显示实例计数视图.但是,在我提供的这个Classes视图中找不到我的对象.

所以我想我做的事情根本就是错误的; 我该怎么做才能看到我的对象,特别是我的对象的精确实例数?

更新1: 我发现了问题的一部分.当探查器窗口出现时,它会显示"会话启动"对话框,您可以在其中选择配置文件并设置各种设置.在名为"Startup"的第一个选项卡上有一个小部分,其中有一个名为"Initial recording profile"的设置,默认设置为[no recordings].当我将其保留为默认值时,我找不到Example对象.当我将其设置为"CPU录制"时,我可以在"所有对象"视图中找到我的示例对象.

更新2: 我在Heap Walker中找不到对象.当我在All Objects视图中选择com.example.Example时,我可以右键单击该对象并选择(在Heap Walker中显示对象).当我这样做时,Heap …

jprofiler

1
推荐指数
1
解决办法
1854
查看次数

标签 统计

docker ×1

java ×1

jprofiler ×1

jvm ×1

neo4j ×1