我有一个Java应用程序,它通过JNA使用几个本机库。 该应用程序适用于许多不同的系统。但是,在关闭应用程序时,在Ubuntu 10.04 LTS-32bit上会发生分段错误。 64位工作正常,其他32位发行版上不会出现错误。 Windows工作正常。 分段错误发生在空析构函数中的glibc的删除函数中。
如果我将JVM的最大堆栈大小增加到32mb,问题就解决了 (例如java -Xss32m ...)
有没有人知道为什么这个错误只发生在Ubuntu 10.04 32bit上? 我在VM中测试了几个发行版。
我使用的是Java 8,默认的最大堆栈大小为4MB。 我不知道这是否与JVM相关,但是ulimit -s是8MB。