English 中文(简体)
专 员 OR 通过提及无国籍人
原标题:object pool OR Pass by reference the stateless objects
  • 时间:2010-01-18 07:47:17
  •  标签:
  • java

我一再构造一个有20个领域的物体。 该物体是用单一透镜构造和使用的。

我计划一度使用集合或构造物体,将其作为相关方法的参数。 之后,将所有领域划归全国扫盲委员会。 同一物体再次使用。

我的问题是,这种做法将改善业绩。 这会推迟制造10万件物体(有时甚至更多)。 但是,我需要确定每个领域无效,这样一来的弹头就会与物体的设定相距甚远。

问题回答

如果在设定目标时不需要昂贵的初始化,我将 t。 重开时间,以便有效地管理记忆。 如果你最终发现,你申请中的瓶颈是实际分配物体,那么你可以尝试进一步优化(尽管我怀疑将所有领域重新定位到它们的违约价值将会更快,最有可能赢得t)。

一般规则是:不过早(micro)优化:-

不要这样做。 你的微创新很可能是缓慢的。

设定目标可能是 Java1.0左右的表现瓶颈,但不是再。 如今把物体集合起来的唯一原因是与这些物体有关的大量资源,例如亚洲开发银行的连接和校对。

我建议不要将记忆库用于除非常昂贵的外部资源之外的任何东西,作为数据库链接或线索。 GC处理短活物体的工作效率很高,因此制造和排除(忘记)物体的效率很高。

产生新要素和保持老要素的连带费用。 在这两种情况下,设立领域(价值转让)将相似,因此,你必须比较的是其他相关费用。

对于新分配的物体,第二个费用是记忆分配。 Java与目前的垃圾收集器一道管理记忆环境,在分配记忆方面确实有效率。 比较本组织需要找到适当的记忆库来分配的C/C++,代为的GC保证,记忆是连续的,而且这种分配确实是快的。 在一些 Java1.4项执行中,采用不到10项《万国邮联指令》是很明智的。 处理青年物体(那些无法通过第一次GC管理实现该目标的人)的速度也很快:只要他们拥有最终确定者,他们就会被完全忽视——而应尽可能避免。

另一方面,在每台GC波运行的年轻物体必须从记忆的一部分转移到另一台。 在目标被认为足够老化之前,这可以发生两倍的情况,然后才能进入老年一代,而老年人的移徙机会也会减少(仍然可以转向代代人组成的紧凑的GC。

长期生活物体的另一个问题是,它们不能在年轻一代的物体上提及。 如果发生这种情况(将<条码>新X(<><>>><>>>>>改为旧物体),那么长寿物体必须重新分配给最新一代,这还可能意味着费用,因为它可能要求将物体从旧一代区域移至新一代,这将给新一代记忆留下一个漏洞,使下一代的GC run能够把物体移到紧凑的记忆中。

最重要的是,有许多真正聪明的人以语言、汇编者和垃圾收集者工作。 所有这些人都将努力改进最常见的主人的业绩,并努力使这一制度脱节,可能使你走不出软、顺畅的道路。

我无疑试图这样做。 虽然现在“常识”人们不应关心物体的设定,但事实上,使用目标集合和特定类别可能取得了许多业绩。 关于档案处理框架,我从集合物体中获得了5%的性能。





相关问题
Spring Properties File

Hi have this j2ee web application developed using spring framework. I have a problem with rendering mnessages in nihongo characters from the properties file. I tried converting the file to ascii using ...

Logging a global ID in multiple components

I have a system which contains multiple applications connected together using JMS and Spring Integration. Messages get sent along a chain of applications. [App A] -> [App B] -> [App C] We set a ...

Java Library Size

If I m given two Java Libraries in Jar format, 1 having no bells and whistles, and the other having lots of them that will mostly go unused.... my question is: How will the larger, mostly unused ...

How to get the Array Class for a given Class in Java?

I have a Class variable that holds a certain type and I need to get a variable that holds the corresponding array class. The best I could come up with is this: Class arrayOfFooClass = java.lang....

SQLite , Derby vs file system

I m working on a Java desktop application that reads and writes from/to different files. I think a better solution would be to replace the file system by a SQLite database. How hard is it to migrate ...

热门标签