高容量的Joda DateTime创作有多贵?

时间:2014-02-25 22:35:07

标签: java datetime memory

我有一个应用程序,每秒创建数千个Joda DateTime对象:

public void handleHighVolumeRequest(Foo foo) {
    DateTime dt = new DateTime().withZone(DateTimeZone.UTC).withTimeAtStartOfDay();
    foo.setDateTime(dt);
    // do other stuff with 'foo' and 'dt'
}

我正在使用默认的JDK6垃圾收集(PS Scavenge和PS MarkSweep)。非默认内存设置为-Xmx768M

为短期(100毫秒)请求创建所有这些DateTime对象是否有非常重要的成本?

1 个答案:

答案 0 :(得分:0)

如果您的次要GC之间的空间比他们居住的时间长得多,那么对象就是短暂的,即。他们大多数时间都死在伊甸园。

这些对象非常重要,但它们都是相对的。很可能每个人都以微秒的顺序花费你,并且耗尽你的伊甸园空间的几百个字节。

如果您看到过早推广和次要GC之间的间隔时间短,您可以尝试增加您的伊甸园尺寸。例如8 GB并非不合理。如果你每0.5秒获得一次小型GC,你宁可每2秒钟一次,尝试将年轻一代增加4倍。

如果你只是想要一天的开始,你可以这样做。

long startOfDayGMT = System.currentTimeMillis() / MILLIS_PER_DAY * MILLIS_PER_DAY;

这将花费大约50纳秒并且不会产生垃圾。

从技术上讲,计算机只支持GMT,而不支持具有闰秒的UTC。