Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 关于在调用垃圾回收时保存当前状态_Java_Android - Fatal编程技术网

Java 关于在调用垃圾回收时保存当前状态

Java 关于在调用垃圾回收时保存当前状态,java,android,Java,Android,我做过这方面的研发,但是找不到这个问题的答案 如果后台活动是android系统的GC,如何保存当前状态 在GC真正发生之前 问候 Inder bagga由于Java GC在运行之前或之后不提供任何回调机制或任何钩子,因此不可能在GC之前执行某些活动 尽管出于监控目的,您可以尝试在固定的时间间隔内捕获当前状态,但要确定此时间间隔,您可能需要验证应用程序中GC的发生方式: jstat -gcutil -t -h5 <pid> 500 5 如果YGCT是以毫秒为单位的小循环时间,这将给出

我做过这方面的研发,但是找不到这个问题的答案

如果后台活动是android系统的GC,如何保存当前状态 在GC真正发生之前

问候
Inder bagga

由于Java GC在运行之前或之后不提供任何回调机制或任何钩子,因此不可能在GC之前执行某些活动

尽管出于监控目的,您可以尝试在固定的时间间隔内捕获当前状态,但要确定此时间间隔,您可能需要验证应用程序中GC的发生方式:

jstat -gcutil -t -h5 <pid> 500 5

如果YGCT是以毫秒为单位的小循环时间,这将给出应用程序GC统计的一般概念,即小循环每19秒发生一次,基于此,您可以在希望保存当前状态时进行调整,因为Java GC在运行之前或之后不提供任何回调机制或任何挂钩,在GC之前不可能进行一些活动

尽管出于监控目的,您可以尝试在固定的时间间隔内捕获当前状态,但要确定此时间间隔,您可能需要验证应用程序中GC的发生方式:

jstat -gcutil -t -h5 <pid> 500 5

如果YGCT是以毫秒为单位的小循环时间,这将给出应用程序GC统计的一般概念,即小循环每19秒发生一次,基于此,您可以在希望保存当前状态时进行调整

如果应用程序中有任何内容正在被垃圾收集,它将已经通过
onStop()
ondestory()
方法。在它成为GCd之前,没有办法保存它


如果您想存储状态,最好在其中一个位置进行存储-尽管最安全的位置是
onPause()
,因为
onStop()
onDestroy()
都是可终止的进程,这意味着这些方法可能无法完全执行-请参阅上的Android文档。如果应用程序中的任何内容正在被垃圾收集,那么它将已经通过了
onStop()
onDestroy()
方法。在它成为GCd之前,没有办法保存它


如果您想存储状态,最好在其中一个位置进行存储-尽管最安全的位置是
onPause()
,因为
onStop()
onDestroy()
都是可终止的进程,这意味着这些方法可能无法完全执行-请参阅上的Android文档

我认为GC的全部要点是您不必担心:)我认为GC的全部要点是您不必担心:)