Android - 从未调用过的本地全局对象析构函数
Android - native global object destructor never called
我使用经典的 System.loadLibrary() 方法从静态 java 块加载共享库。该库具有静态分配的全局对象:
class Foo
{
public:
Foo()
{
}
~Foo()
{
logtofile( "Foo::~Foo() called" );
}
}
Foo dummy;
全局函数logtofile在sdcard上写入一个日志文件。虽然在加载库时会调用构造函数,但在我看来从未调用过析构函数。我希望在两个构造函数调用之间应该有一个析构函数调用。所以问题是:什么时候调用 Foo 析构函数?
Android 从不卸载本地库;通常,当系统决定它需要它的资源时,应用程序进程会自发地终止——它相当于 kill -9
,从不调用析构函数或 Java finalize()
.
我使用经典的 System.loadLibrary() 方法从静态 java 块加载共享库。该库具有静态分配的全局对象:
class Foo
{
public:
Foo()
{
}
~Foo()
{
logtofile( "Foo::~Foo() called" );
}
}
Foo dummy;
全局函数logtofile在sdcard上写入一个日志文件。虽然在加载库时会调用构造函数,但在我看来从未调用过析构函数。我希望在两个构造函数调用之间应该有一个析构函数调用。所以问题是:什么时候调用 Foo 析构函数?
Android 从不卸载本地库;通常,当系统决定它需要它的资源时,应用程序进程会自发地终止——它相当于 kill -9
,从不调用析构函数或 Java finalize()
.