我在我的代码中使用 joda time。当我添加这行代码时,使用内存将增加30M!
LocalDateTime _currDate = new LocalDateTime();
我发现几乎所有的 java 程序员都推荐使用 joda time。所以我想也许我没有以正确的方式使用它。谁知道原因,请帮帮我。非常感谢!
JVM 非常复杂,仅仅因为您实例化了一个新对象并不意味着它会在该行代码处消耗内存。在某些情况下,即使您显式实例化它们,JVM 也永远不会为未使用的对象分配内存。 您将需要使用内存分析器来查看到底发生了什么。 Joda 是一个构建良好的库,这个类实例化不太可能导致您的内存增加 30m。
一个好的分析器将向您展示该类消耗了多少内存,堆中发生了什么,以及其他一些有用的见解。 它可能只是 JVM 在堆上腾出更多空间来解释代码中发生的其他事情。
我相信其他人会加入一些好的分析器,但一些 IDE 会直接内置它们。从那里开始,祝你好运。
我找到了joda时间消耗内存的原因。这就是答案:Android Java - Joda Date is slow based on plowman's solution,我解决了这个问题。
java.time取代Joda-Time,并向后移植到 Android。
java.time框架内置于 Java 8 及更高版本中。这些类取代了旧的麻烦的日期时间类,例如java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
。
现在处于维护模式,Joda-Time项目还建议迁移到 java.time。
要了解更多信息,请参阅Oracle 教程。并在 Stack Overflow 上搜索许多示例和解释。
许多 java.time 功能在 ThreeTen-Backport 中向后移植到 Java 6 和 7,并在ThreeTenABP中进一步适应 Android 。
尽管我没有测试过,但您可能会看到这个库的不同内存使用情况。