2011-05-02 69 views
3

我经常听说Java的Swing工具包被认为是“内存猪”(例如this answer)。Java的Swing真的是一个“记忆猪”吗?

这是...

  • 一个由于Swing的架构;

  • B Java固有的内存管理;或

  • Ç没有根据的要求,从缺乏了解如何内存分配工作(例如,仅仅因为任务管理器中说,一个应用程序分配的X ​​MB茎,实际上它并不意味着它实际上是使用所有的它)

我想找到一个具体的客观分析关于Swing的真正的内存需求与类似的GUI工具包(不一定是Java)相比。

+0

“我听到......”你有没有对这个陈述有任何参考?否则,在我看来,这有点主观。 – 2011-05-02 23:28:50

+2

我没有任何参考证实或驳斥关于Swing的记忆使用的任何声明,因此我在问这个问题。 – 2011-05-02 23:36:28

回答

2

摇摆使用相当多的内存这是真的,但我不会说它是一个“记忆猪”。作为一个回复说,在Swing中,每个组件都是自己绘制的(不使用操作系统原始小部件),这就是Swing在平台之间移植的原因。

从我的角度来看,Look'n'Feel概念非常好,但它当然有一些缺点(内存消耗)。但是我发现这种缺点很大程度上是通过仅用一行代码即时改变应用程序的外观和感觉来抵消平衡的。那里有一些第三方look'n'feel(一些商业,一些开源),可以给你的应用程序提供一些“友好”的外观。另外,内存使用也起源于JDK(至少直到6)在内存中加载(或预加载)类的方式:就我所见,在第二次在代码中运行一些Swing API ,整个Swing库会被完全加载,即使你不需要所有的小部件。 JDK7(我没有测试过)和“Jigsaw”可能会改变。

4

我经常用“臃肿”的摇摆意味着什么稍有不同:

摇摆捆绑它本身的需要,而不是用什么已经提供的一切。

这是什么意思?这意味着你使用/看到的任何东西都是由Swing绘制和完全处理的。相比之下,SWT实际上使用操作系统的窗口,所以自然而然地,它具有更少的内存使用量和更少的工作量。 Swing中的“窗户”并不是真的“窗户”,它们只是制作成看起来像一样的窗户。相比之下,SWT使用“真实”窗口,并让操作系统进行大量管理。

+0

然后eclipse如何使用与intellij一样多的RAM?我的电脑上的Visual Studio使用100 - 200 MB,而intellij和eclipse可以使用300 - 900,通常平均为500。 – Pavel 2015-08-24 21:18:55

+0

@ paulpaul1076:也许是因为RAM的使用比GUI更多? – Mehrdad 2015-08-24 23:04:06

+0

像什么?缺乏Java和所有的价值类型? – Pavel 2015-08-24 23:06:45

2

请看附件的测试表明它是在许多情况下,平局:

  1. 结论 这是很难给出一个规则的拇指,其中SWT会胜过摇摆,反之亦然。 在某些环境下(例如Windows),SWT是胜利者。在其他Linux(Linux,VMware托管Windows的VMware )中,Swing及其重绘优化性能明显优于SWT。 性能差异显着:2个或更多的因素是常见的,在两个方向都是 。 Swing抑制连续重绘的能力在 有效。在实践中这很可能不是经常发生的事情,因为在短时间内重复更新请求可能并不常见。在这种情况下,Swing Text Field(sync)测试的结果 应该被认为具有比Swing Text Field测试更高的可信度,因为它们近似地更接近资源使用情况 。 执行此基准之前的初始预期是找到SWT超越 Swing。这种预期源于与基于Swing的应用程序相比,基于SWT的Java应用程序(例如Eclipse IDE)的响应速度更快。但是,这种预期无法定量确认。感知响应性可能是响应用户交互所需的较短时间的结果,其不仅涉及绘图,还涉及检测用户的动作并响应用户的动作。而且,决定论(较小的标准偏差)可能导致更高的感知响应性。

http://public.cosylab.com/CSS/DOC-SWT_Vs._Swing_Performance_Comparison.pdf

+0

不是问题的真正答案,你关注性能,而OP询问内存使用情况(尽管我承认可能会对第一个产生影响)。 – jfpoilpret 2011-05-03 05:11:31

+0

您的观点很好,报告的结论可能不是我的答案中最好的。但报告中的表格显示了所使用的资源,并给出了我所看到的最佳比较。 – Bit 2011-05-03 10:46:46

+0

此报告已过时,并未显示内存资源消耗。我对JTable获得的时间差也感到惊讶,因为我不知道代码是如何编写的。 – jfpoilpret 2011-05-03 19:58:05