当前位置: 首页 > 知识库问答 >
问题:

需要澄清罐子的内存使用情况

潘畅
2023-03-14

我正在用这个命令运行一个jar。注意内存参数。(罐子大小为56MB)

java -jar -Xms64M -Xmx256M build/libs/account-1.0.0-SNAPSHOT.jar 

在我的Ubuntu系统监视器中,jar内存使用情况如下所示。

当我使用YourKit分析jar时,它显示在下面,这并不等于上面的内存使用量。

我错过了什么?

共有1个答案

谢洛城
2023-03-14

jar大小与JVM内存使用完全无关。

jar可以保存类、接口,但也可能包含与java没有直接关系的数据,如图像、属性文件、文本文件、jsons等。

此外,一个只包含一个类的jar不能与其内存使用量相比较。实际上,jar使用jre的类(String、ArrayList等)它们不存在于罐子本身,而是加载在内存中。

使用探查器检查内存可以检查正在运行的应用程序的使用情况。基本上你可以回答以下问题:

  • 当不再使用时,内存是否被释放

无论如何,记住jar的磁盘大小与JVM内存使用量绝对无关

 类似资料:
  • 我认为用A*算法应该是SAEFG,但答案是SBEFG。现在我的教授是一个无所事事的人。有人能解释为什么是SBEFG吗?

  • 来自 https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-blob#poison 当 Blob 触发器函数失败时... “失败”是什么意思?编译失败?引发未处理的异常? 如果有一些不起作用的示例代码,那就太好了。所有示例代码都显示了工作状态,因此无法演示 Azure 函数中的故障模式。

  • 我们有申报单 其中backlog被标识为传入连接的最大队列长度。如果连接指示在队列已满时到达,则会拒绝连接。 假设积压设置为10。 这是否意味着服务器套接字将接受不超过10个客户端? 然后: 只有当时,积压数才会下降。这是正确的吗? 有没有办法知道一个套接字当前正在处理多少个打开的连接(换句话说,它离放弃并开始拒绝新连接有多近)

  • 需求:创建一个多租户应用程序,该应用程序应该根据请求中的租户id将每个租户的数据插入到各自的PDB中。换句话说,每个租户或客户在CDB中都有自己的PDB,所有PDB都有相同的模式,然后根据请求中的租户Id选择一个数据源,并将数据插入到该PDB中。 Stack-Spring boot 2.3.0.发行版,Oracle 18c,连接池-Oracle共享通用连接池 UCP连接: Spring数据源配置类

  • 我需要一些帮助来澄清写关注的概念,我使用MongoDb 4.0.2(带副本集)和java-mongo驱动程序3.8.1 我已经在mongo配置中添加了关于 在代码端,何时可以使用数据库的ack响应?我发现,当使用delete或update时,库返回一个Result对象(作为deletesult),其中包含一个函数,用于获取集合中多数副本的delete/update结果。 但是我找不到一个类似的所有

  • 现在,编辑器在使用注释方法的地方显示警告。然后显示使用的建议。当我接受它的更改时,它会将代码转换为此,警告消失。 使用有意义吗? 实现是 所以如果为空,我的代码仍然会崩溃。 我们应该对此进行空检查。 我认为比好,你说呢?如果是,则编辑器不应建议在此处使用。 因为在具有状态(如)的字段中使用要求NonNull是不安全的。我是否错过了的一些好处?