I need to get the system date, and Java provides the new Date().getTime()
.
But I need to avoid new object allocation (I\'m working on a embedded system)
Use System.currentTimeMillis() or System.nanoTime().
You can use System.currentTimeMillis().
At least in OpenJDK, Date uses this under the covers.
The call in System is to a native JVM method, so we can't say for sure there's no allocation happening under the covers, though it seems unlikely here.
As jzd says, you can use System.currentTimeMillis
. If you need it in a Date
object but don't want to create a new Date
object, you can use Date.setTime
to reuse an existing Date
object. Personally I hate the fact that Date
is mutable, but maybe it's useful to you in this particular case. Similarly, Calendar
has a setTimeInMillis
method.
If possible though, it would probably be better just to keep it as a long
. If you only need a timestamp, effectively, then that would be the best approach.
This should work:
System.currentTimeMillis();