gpt4 book ai didi

memory-management - 组件的 ColdFusion 内存使用

转载 作者:行者123 更新时间:2023-12-04 08:58:03 24 4
gpt4 key购买 nike

我正在使用 VMC 创建一个站点,并使用 bean 将数据从模型传输到 Controller / View 。

我计划实现一些基本且非常简单的缓存,如果它们没有改变,它将把 bean 存储在一个简单的结构中(随着使用量的增长,我们将在 1.3 版左右实现一个更好的缓存系统)。

所以问题在于我们的 bean 中有什么。

一种类型的 bean 只保存基本数据,并依赖一些外部服务来完成其余的工作(联系 DAO 获取查询,解析查询以加载 bean 值)。正如一位同事反复告诉我的那样,这是“贫血 bean ”模型:-)。

另一种类型的 bean 将更加独立。它会知道 DAO 在哪里,因此会直接调用 DAO 以获取数据查询。它将包含必要的函数来解析查询并设置属性。它基本上将大部分“服务”层与 bean 结合起来,将直接数据库留在 DAO 层中。

当然,对于 Controller / View ,两个 bean 的外观和行为都相同。

但问题是内存以及 ColdFusion/Java 如何处理它。

使用贫血模型,bean 将有足够的内存来保存属性变量,只需稍加触摸即可让它在需要时指向服务。

使用第二种类型 bean 中较重的功能,它会在缓存中占用更多内存吗??? bean的每个副本都会有方法的完整副本吗?

我倾向于认为第二个模型不会有更多的内存,因为它们会“共享”方法并且只需要属性变量的内存。

恕我直言,第二种方法将简化代码库,因为 bean 需要的代码将更接近 bean,而不是分散在 DAO 和服务之间。它会减少服务中的简单函数,这些函数仅传递对 bean 的 DAO 的调用,可以在需要时直接转到 DAO……

这个问题有意义吗??或者至少我是怎么问的?

最佳答案

所有的内存管理都在 Java 级别进行,因此它遵循相同的规则。在 Java 中,创建对象实例时唯一分配的"new"内存用于其成员变量;组件/类本身的方法没有内存占用:这些东西只存储在内存中一次,并有一个引用。

一个可能的考虑是 CFC 的每个方法都编译为它自己的离散类(为什么?我不知道),所以每个方法都是它自己的类。与 Java 类使用相比,这可能意味着 CFC 使用的内存占用略大,但这仍然不会随对象实例化而扩展:对象的每个实例仍然只为它的成员变量消耗内存,而不是方法定义对象的 CFC。

关于memory-management - 组件的 ColdFusion 内存使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14096536/

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