我正在编写程序,该程序应该针对堆和GC的使用进行优化。基于此,我需要创建尽可能少的对象。所以我想知道,如果我在一行中编写命令,这是否是GC的问题?
例如,此代码创建2个对象,这些对象可用于GC:
UUID uuid = UUID.randomUUID();
String s = uuid.toString();
如果我在一行中重写这个代码,比如:
String s = UUID.randomUUID().toString();
第二个变体还会为GC创建2个对象还是只创建String对象?
就GC(或Java的任何部分(而言,这两行之间没有任何区别。
需要担心堆的优化是非常不寻常的。你有一个程序已经工作了,占用了太多堆,还是做了太多GC?如果没有,不用担心。这是过早的优化,可能会使情况变得更糟。Java的GC非常非常擅长它的功能。如果您不确定这两行之间的区别,那么您应该相信Java会处理自己的内存使用。