由于Java/Android GC,是否可能将整数重置为零?
我读过一篇文章(很抱歉是用中文写的),作者说: 这是一个与web相关的应用程序,我们声明了一些私有变量,当用户 在完成一些操作后,这些变量将被设置为某个值以供以后使用 通常情况下,应用程序运行良好,但当我们使用 由于使用了大量JavaScript,我们的应用程序开始出现错误行为 意外(没有任何活动切换),我们无法找到原因 最后,我们发现这是由一个整数变量引起的 设置为零。但我们非常确定我们的代码不会将其重置为 零,所以只有一个可能的结论:“为了满足 WebView、垃圾收集器所需的资源已收集 变量”。所以最后我们将这个变量设置为一个静态变量来避免这个问题 坦率地说,这个“GC将int设置为零”参数完全违背了我的Java知识 因为据我所知:由于Java/Android GC,是否可能将整数重置为零?,java,android,garbage-collection,Java,Android,Garbage Collection,我读过一篇文章(很抱歉是用中文写的),作者说: 这是一个与web相关的应用程序,我们声明了一些私有变量,当用户 在完成一些操作后,这些变量将被设置为某个值以供以后使用 通常情况下,应用程序运行良好,但当我们使用 由于使用了大量JavaScript,我们的应用程序开始出现错误行为 意外(没有任何活动切换),我们无法找到原因 最后,我们发现这是由一个整数变量引起的 设置为零。但我们非常确定我们的代码不会将其重置为 零,所以只有一个可能的结论:“为了满足 WebView、垃圾收集器所需的资源已收集 变
int
或Integer
本身的对象是收集的garabage,然后由应用程序代码重新创建,则在外部看来,int
或Integer
已重置
否则,不会
GC是否可能只释放对象占用的部分空间,而不是完整对象
仅当您使用WeakReference
之类的东西作为与“部分空间”的连接时
是否有可能引用一个已经被垃圾回收的对象
不。如果你能够到它,它就不能被垃圾收集
如果我们取消引用它会发生什么
时空连续体将发生断裂,终结我们所知的现实
有没有可能因为垃圾收集而将int或Integer对象重置为零
如果保存int
或Integer
本身的对象是收集的garabage,然后由应用程序代码重新创建,则在外部看来,int
或Integer
已重置
否则,不会
GC是否可能只释放对象占用的部分空间,而不是完整对象
仅当您使用WeakReference
之类的东西作为与“部分空间”的连接时
是否有可能引用一个已经被垃圾回收的对象
不。如果你能够到它,它就不能被垃圾收集
如果我们取消引用它会发生什么
时空连续体将发生断裂,结束我们所知的现实。原因(可能)是他们在背景中的活动被破坏和重建。私有变量将保持最初的状态。@zapl:不,他们说发生这种现象时没有活动切换。然后是使用错误的对象实例或在隐藏位置将变量设置为0。重命名变量,添加一个getter/setter来打印访问权限,并检查是什么改变了它。这是一个外部错误(内存损坏、本机代码写入错误位置等)的可能性非常小,原因可能是(可能)他们在后台的活动被破坏并重新创建。私有变量将保持最初的状态。@zapl:不,他们说发生这种现象时没有活动切换。然后是使用错误的对象实例或在隐藏位置将变量设置为0。重命名变量,添加一个getter/setter来打印访问权限,并检查是什么改变了它。这是一个外部错误(内存损坏、本机代码写入错误位置等)的可能性非常小,所以请不要取消引用您不能拥有的引用!那是严肃的事!所以,请不要取消引用您不能拥有的引用!那是严肃的事!