减少将原始类型与泛型一起使用时减少潜在的垃圾浪费吗?

天堂

我有这个系统,可以让我为每个玩家创建和实现类型安全的变量。每个变量的定义如下:

@Foo
public static final Bar KILLS = new Bar();

注释将标记要在运行时拾取的变量,以进行注册。这些变量本质上是静态的mutator方法,可以像这样调整所讨论玩家的基础值

KILLS.set(player, 10);

该系统运行良好,但是每种类型(对象,整数,字符串等)都具有可变类型的支持,该可变类型被延迟加载到相应玩家的变量映射中。我对这种设计可能会随着玩家人数的增加而带来的潜在垃圾问题感到好奇。我知道由于Java的自动装箱机制,某些事情是不可避免的,但是其他地方可能还有一些改进的余地。我对Java内存模型并不完全熟悉,因此请原谅我的解释或缺乏它。

编辑:

为了更加清楚,每种变量类型都扩展了父类并分别提供了T类型。然后,这些子类将被访问以覆盖必需的方法,这些方法允许它们改变有关玩家变量的值。类层次结构的可视化

Simbleau

Firstly, I would like to say I am a bit confused by your mention of "garbage issues", because your context is not entirely clear whether you're referring to Java's implicit garbage collection of runtime memory or whether you're concerned about this registration data is piling up somewhere else, like a database.

If you're referring to Java's runtime memory management: Java is (as you probably know) automatically garbage collected but you can suggest (with no guarantee whatsoever) Java to collect garbage at any time with System.gc(). This is almost always a micro-optimization and provides little to no real benefit as Java is already amazing at determining the correct time to do garbage collection without you. I wouldn't even bother worrying about it in Java.

如果您指的是这种数据存储的外部模型,会很担心。由于缺乏更好的术语,采用抽象的“ setter”方法可以使错误或副作用暴露在内存中。这需要在Java实现上进行双重管理,以使其尽可能避免出现错误,但是您还需要自己管理外部存储中的内存。

尽管如此,几乎可以肯定,这种情况表明支持代码需要重组和更多指导。我认为,这种抽象设置方法是一种代码气味。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在将泛型引用类型与泛型类型一起使用时收到警告

与泛型类型一起使用时,Expression.Convert(...,someGenericType)引发ArgumentException

减少将bower_components捆绑在一起的HTTP请求?

TypeScript:将映射类型与泛型一起使用

将联合类型与泛型一起使用

如何将Swift协议与泛型方法和泛型类型一起使用

将映射类型与模板文字类型一起使用时如何使用原始映射键?

当与 MUI TextField 等 Conrolled 组件一起使用时,React Hook Form 是否会减少重新渲染

减少 Python zip 大小以与 AWS Lambda 一起使用

非泛型类型不能与类型参数一起使用(Realm Xamarin)

非泛型类型字段不能与类型参数一起使用

非泛型类型'DelegateCommand'不能与类型参数一起使用

使用时可以减少socket地址吗?

如何在不声明泛型类型的情况下将类与泛型一起使用

在泛型方法中与Int32类型一起使用时,无法从用法中推断出UInt32和UInt64类型

您可以使用泛型派生与TypeMock一起使用的操作吗?

非泛型方法'HttpClient.GetAsync(string)'不能与类型参数一起使用

泛型类型推断不能与方法链接一起使用?

为什么不能将“ as”与约束为接口的泛型类型参数一起使用?

Java:如何将 Arrays.copyOfRange() 与泛型类型一起使用?

泛型类型如何在Scala中与继承一起使用?

非泛型方法'ControllerBase.Ok()'不能与类型参数一起使用

非泛型方法“ IServiceProvider.GetService(Type)”不能与类型参数一起使用

将泛型类型参数与`typeof T`一起使用

C#泛型类:如何限制成员函数与特定类型一起使用?

在TypeScript中将泛型与映射的条件类型一起使用

@property的objective-c“泛型”类型,可与多个子类一起使用

快速扩展MutableCollectionType不能与泛型类型的数组一起使用

是否可以将命名元组与泛型类型声明一起使用?