所以我有一点问题。我有台式电脑和笔记本电脑。我正在开发一个audioplayer,我正在对性能进行一些测试,我注意到在桌面上程序在taskmanager上运行了59mb的RAM,而在我的笔记本电脑上它运行的内存只有48MB。我不知道这种差异来自何处,因为以下陈述是事实:
当我使用Launch4j将程序包装在.exe文件中并使用捆绑的java路径(我的笔记本电脑中的那个)时,会发生同样的事情。我的电脑再次以比我的笔记本电脑更多的RAM运行。
有没有人知道这种巨大的性能差异来自哪里?我很茫然,我也试图降低桌面的RAM。
重要提示 我发现在使用JFrame创建一个非常基本的程序时也会发生这种情况。在我的笔记本电脑上,空框架仅使用18mb的RAM,在我的电脑上它使用28mb的RAM。我认为这就是差异的来源。但是,这种巨大的性能差异的潜在原因是什么?
规格笔记本电脑 8GB RAM intel i5-5200U @ 2.2ghz 英特尔高清显卡5500
规格PC 8GB RAM intel i5-3470 @ 3.2ghz NVIDIA gtx960
答案 0 :(得分:1)
根据Java 8文档,默认的初始和最大堆大小取决于物理内存量。您运行的是相同版本的Java,相同的操作系统和相同数量的RAM,因此初始修复大小应该相同。
然而,之后的事情发生在JVM中,并且可能存在显着差异。例如:
这两个系统可能有不同的屏幕尺寸和屏幕分辨率。这可能意味着应用程序的JFrame具有不同的维度(以像素为单位),因此占用不同的内存量。 (我猜你的PC上的屏幕比你的笔记本电脑大。)
图形卡可能存在差异,导致各个JVM选择不同的视频策略(加速与否)。这可能导致堆和非堆内存使用的差异。
音频方面可能存在差异。
虽然(堆)内存使用量的实际差异可能很小,但它们可以通过GC的堆大小调整算法放大。在调整堆大小时,GC将尝试以相当大的百分比增长它。如果堆空间使用推动PC JVM比笔记本JVM多一次调整堆大小,实际堆使用量的微小差异可能会导致相应堆大小的差异更大。
简而言之,我无法明确说明为什么内存使用会有如此大的差异,但有很多可能的解释。
但我不担心这个。 18Mbytes与28Mbytes是#34;小啤酒"在具有8 GIGABYTES物理RAM的系统上。我们谈论的是每个系统物理内存的大约0.125%。
答案 1 :(得分:0)
在系统内存和ram分配的ram和特定任务的进程中。 处理器负责分配多任务和多处理。你可以在同一处理器和不同的系统上检查相同的文件。
请检查处理器的两个系统配置。