2014-02-25 12 views
0

我有DateTime對象每秒創建成千上萬喬達的應用:創建大量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清除和PS MarkSweep)。非默認的內存設置是-Xmx768M

創建所有這些DateTime對象的短期(100毫秒)請求是否有不平凡的成本?

+0

看看這個:http://joda-time.sourceforge.net/faq.html#performance 它似乎表現不錯。 –

回答

0

如果您的次要GC之間的空間比他們居住的時間長得多,則對象壽命短。他們大部分時間都在伊甸園的空間裏死去。

這些對象是非平凡的,但它都是相對的。最有可能的是每個人都要花費你的微秒級,並佔用你Eden空間的幾百個字節。

如果你看到過早的促銷和小GC之間的短時間間隔,你可以嘗試增加你的Eden尺寸。例如8 GB並非不合理。如果你每0.5秒獲得一次次要GC,那麼你更希望每2秒鐘嘗試將年輕一代增加4倍。

如果你只想一天的開始,你可以做到這一點。

這將花費大約50納秒,並且不會產生垃圾。

從技術上講,計算機只支持GMT,而不支持閏秒的UTC。