这是关于Java中内存分配的noob问题.我想知道以下reassignemnts是否"有问题":
例如.
byte[] b = new byte[10];
..
b = new byte[20]
....
b = new byte[4]
Run Code Online (Sandbox Code Playgroud)
这会擦除堆栈并分配新内存吗?我们可以重新调整变量/对象的大小并以这种方式重新标注它吗?
这会擦除堆栈并分配新内存吗?
是的,如果没有任何实时参考,旧的对象将被GC.
我们可以重新调整变量/对象的大小并以这种方式重新标注它吗?
不,Java数组无法动态增长.它们的大小总是固定的.
如果是其他对象,则可以更改对象的状态.对于Ex : ArrayList,您可以在创建列表后更改列表的大小.
可能只是一个额外的问题.如果这只是分配新的内存而旧的内存由GC处理,那么可以执行以下操作:
Run Code Online (Sandbox Code Playgroud)MyObject myobject = new MyObject(byte[20]) ... myobject= new MyObject(byte[10]);
是的,这是完全正确的.您正在为旧参考重新分配新对象myobject.