我MyClass
和会员一起上课float[] myArray
。我使用以下方法构造:
public MyClass(float[] initArray) {
myArray = initArray;
}
我想知道在后台发生了什么:JVM是否将指针设置为相同?我是否有将myArray
变量丢失给垃圾收集器的风险?
最好执行以下操作:
public MyClass(float[] initArray) {
int len = initArray.length;
myArray = new float[len];
System.arraycopy(initArray, 0, myArray, 0, len);
initArray = null;
}
我问是因为我是在内存紧张的嵌入式环境上编程的,所以我不想丢失变量(例如第一个示例)或浪费额外的空间(例如通过设置initArray
为null,我希望GC来处理它)然后还给我那个RAM)。
initArray
在其他函数中创建了局部变量会怎样?谢谢。JVM是否将指针设置为相同?
->是的,在Java中,它们更好地称为引用。
我有失去myArray变量给垃圾收集器的风险吗?
->否,除非您丢失对MyClass对象的引用。
最好执行以下操作?
->最好-不。这取决于您的需要,
在这里创建一个实际的副本,都可以。
设置那里initArray = null;
没有用的顺便说一句,
因为initArray
没有通过引用传递。在Java中,
所有内容均按值传递,甚至是引用
(initArray
此处是引用)
在第一种方法中,如果initArray是
在其他函数中创建的局部变量,会发生什么情况?
->
在您将对本地变量的引用保存到MyClass对象中时,可以考虑一下它,当函数完成
执行时,您不会丢失它(我想这是您所关心的)。简而言之,
只要MyClass对象(保存它的对象)存在,它就会存在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句