偶然发现了一个与stackoverflow中的Calendar对象相关的问题。读这个问题让我问自己一个问题:'如果我们能够找到一个物体的年龄怎么办?物体的年龄,以小时/天/周/月/年为单位。那我们可以做些什么呢?它会有帮助吗?它会帮助我分析我的程序运行时吗? '
我想我们可以关联单个对象的对象年龄,因为它在应用程序的生命周期中存在。从某种意义上说,单个对象被加载时,它会在应用程序结束时开始其生命并结束生命。但同样可以扩展到非单例对象。
我认为这个问题可能值得追求,但我想从stackoverflow社区确认。您是否认为我们可能会在应用程序/系统的运行时遇到一个场景,我们需要在JVM或运行时内存等中计算对象的年龄。通过计算哪个,我们可以为应用程序做出一些决定。
经过一些小规模的研究,发现Garbage-Collector需要了解物体的年龄。
所以,我想知道的是:
(希望,这可能不会被低估,只是想补充一点,我很好奇地询问stackoverflow社区。请道歉,这不是一个适合在这里提出的编程练习。添加了标签,为这个问题带来了背景。 )
答案 0 :(得分:1)
我不知道会带来什么好处。我想,它可能对某些性能调优和调试问题有所帮助。
但是,除非对象被编码以记录其自己的年龄,否则没有实际的方法(在标准Java中)。这会产生大量的时间和空间成本。
经过一些小规模的研究,发现Garbage-Collector需要了解物体的年龄。
实际上,世代GC只需要大致的年龄。它可以根据对象当前所处的位置来确定;即当前分配的“空间”。
对于Java语言和主流实现......
如果我们能够找到物体的年龄怎么办?
总的来说,我们不能。一般而言,这使剩下的问题“没有实际意义”。
我们可以用它做什么?
摸拟。
它会有用吗?
摸拟。
它是否有助于我们分析我的程序运行时并使用它做什么以及它会是什么?
在某些情况下,可能是的。然而,这个问题没有实际意义。
可能受益于对象计算年龄的应用程序运行时/场景的可能/可能部分是什么?
可能是性能调整。可能是调试。然而,这个问题没有实际意义。
您是否在开发/调试/字段问题中遇到过一个场景,其中您希望如果能够计算对象的年龄,它会受益吗?
可能。 (我已经编程了40多年,而且很难记住我在那个时期所做的一切。)但是我没有强调它。
此外,我从未考虑(假设)记录每个对象的生命周期的好处是值得的。
但是如果您正在设计/实现一种新的实验性编程语言,请随意将其包含在功能列表中。如果它是一个有用的功能 1 ,那么应该有一些研究论文。
1 - 和(玩世不恭)即使没有: - )