我在代码中使用joda时间。当我添加这行代码时,使用内存将增加30M!
LocalDateTime _currDate = new LocalDateTime();
我发现几乎所有的java程序员都建议使用joda时间。所以我想也许我没有以正确的方式使用它。谁知道原因,请帮帮我。非常感谢你!
答案 0 :(得分:5)
JVM非常复杂,只是因为你实例化一个新对象并不意味着它将占用该行代码的内存。在某些情况下,如果您明确地实例化它们,JVM永远不会将内存分配给未使用的对象。 你想要使用内存分析器来查看究竟发生了什么。 Joda是一个构建良好的库,这个类实例化导致你的记忆的可能性很小。增加30米。
一个好的分析器会告诉你这个类消耗了多少内存,堆中发生了什么,以及其他一些有用的见解。 可能只是JVM在堆上腾出更多空间来解释代码中发生的其他事情。
我确定其他人会对一些优秀的个人资料进行讨论,但有些IDE会将它们内置于其中。从那里开始,祝你好运。
答案 1 :(得分:2)
我已经找到了joda时间内存消耗的原因。这就是答案:Android Java - Joda Date is slow 根据普劳曼的解决方案,我解决了这个问题。
答案 2 :(得分:0)
java.time取代Joda-Time,back-port to Android。
java.time框架内置于Java 8及更高版本中。这些类取代了旧的麻烦日期时间类,例如java.util.Date
,.Calendar
和& java.text.SimpleDateFormat
。
现在在maintenance mode中,Joda-Time项目还建议迁移到java.time。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。
大部分java.time功能都被反向移植到Java 6& ThreeTen-Backport中的7,并在ThreeTenABP中进一步适应Android。
您可能会在此库中看到不同的内存使用情况配置文件,但我尚未对其进行测试。