gpt4 book ai didi

java - .Jar 在一台 PC 上使用的 RAM 多于另一台 PC

转载 作者:行者123 更新时间:2023-12-01 09:49:41 24 4
gpt4 key购买 nike

所以我有一个小问题。我有台式电脑和笔记本电脑。我正在开发一个音频播放器,并且正在对性能进行一些测试,我注意到在桌面上该程序在任务管理器上运行时需要 59MB RAM,而在我的笔记本电脑上它只需要 48MB RAM 运行。我不知道这种差异从何而来,因为以下陈述都是事实:

  1. 我在两台计算机上安装了完全相同的 JRE/JDK 版本。
  2. 我的电脑和笔记本电脑都是 64 位最新的 Windows 8.1 机器
  3. 两个 .Jar 文件是相同的(我什至用笔记本电脑中的文件替换了台式机上的文件)
  4. 在 Netbeans 本身中(同样,两台计算机具有相同的版本和设置),在我的台式机上,它的运行内存为 50mb,在我的笔记本电脑上,运行内存为 35mb

当我使用 Launch4j 将程序包装在 .exe 文件中并使用捆绑的 java 路径(来 self 的笔记本电脑的路径)时,也会发生同样的情况。同样,我的 PC 的运行内存比我的笔记本电脑多得多。

有人知道这种巨大的性能差异从何而来吗?我很茫然,我也在尝试降低桌面的 RAM。

重要说明我发现用 JFrame 制作一个非常基本的程序时也会发生这种情况。在我的笔记本电脑上,空框架仅使用 18mb RAM,在我的电脑上,它使用 28mb RAM。我认为这就是差异的来源。但造成这种巨大性能差异的潜在原因是什么?

笔记本电脑规范8GB内存英特尔 i5-5200U @2.2ghz英特尔高清显卡 5500

规范电脑8GB内存英特尔 i5-3470 @3.2ghzNVIDIA gtx960

最佳答案

根据 Java 8 文档,默认的初始堆大小和最大堆大小取决于物理内存量。您运行的是相同版本的 Java、相同的操作系统和相同数量的 RAM,因此初始修复大小应该相同。

但是,此后 JVM 内会发生一些事情,并且很可能存在显着差异。例如:

  • 这两个系统可能具有不同的屏幕尺寸和屏幕分辨率。这可能意味着应用程序的 JFrame 具有不同的尺寸(以像素为单位),因此占用不同的内存量。 (我猜你的电脑屏幕比笔记本电脑的屏幕大。)

  • 显卡可能存在差异,导致各自的 JVM 选择不同的视频策略(加速或不加速)。这可能会导致堆内存和非堆内存使用情况的差异。

  • 音频方面可能存在差异。

虽然(堆)内存使用量的实际差异可能很小,但 GC 的堆大小调整算法可能会放大这些差异。当调整堆大小时,GC 将尝试将其增长一个显着的百分比。如果堆空间使用情况促使 PC JVM 比笔记本电脑 JVM 多调整一次堆大小,则实际堆使用情况的微小差异可能会导致各自堆大小的较大差异。

<小时/>

简而言之,我不能肯定地说为什么内存使用量有这么大的差异,但有很多可能的解释。

但我不会担心这个。在具有 8 GB 物理 RAM 的系统上,18Mbytes 与 28Mbytes 相比只是“小啤酒”。我们讨论的是每个系统物理内存的大约 0.125%。

关于java - .Jar 在一台 PC 上使用的 RAM 多于另一台 PC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37679756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com