Z3Java可能内存泄漏?

Z3Java可能内存泄漏?,java,memory-leaks,z3,smt,Java,Memory Leaks,Z3,Smt,我发现Z3的Java库有一个奇怪的内存问题,我不知道问题出在哪里。奇怪的是,我不能在有Java7的Windows机器上重现这个问题(不过我很可能有稍旧的Z3版本)。问题发生在使用Java 6和Z3 v4.3.2的MacOSx 10.6.8上。我有一个使用Z3进行分析的应用程序。我跟踪了以下代码作为问题的(初始)来源: Symbol eNames = con.mkSymbol(domainName); Symbol[] symbols = new Symbol[values.

我发现Z3的Java库有一个奇怪的内存问题,我不知道问题出在哪里。奇怪的是,我不能在有Java7的Windows机器上重现这个问题(不过我很可能有稍旧的Z3版本)。问题发生在使用Java 6和Z3 v4.3.2的MacOSx 10.6.8上。我有一个使用Z3进行分析的应用程序。我跟踪了以下代码作为问题的(初始)来源:

Symbol eNames = con.mkSymbol(domainName);           
Symbol[] symbols = new Symbol[values.length];
for (int i = 0; i < values.length; i++) symbols[i] = con.mkSymbol(values[i]);
System.out.println("Before ENUMSORT");
//EnumSort eSort = con.mkEnumSort(domainName, values);
EnumSort eSort = con.mkEnumSort(eNames,symbols);
System.out.println("After ENUM SORT ...");
我知道这不是一种很好的调试方法,特别是当内存出现问题时,但是调试代码非常困难,因为它源于JNI。当我在这里查看Z3代码()时,我无法找出问题的根源。我假设方法Z3_mk_enumeration_sort是从Java中的mkEnumSort方法调用的。当我在代码中将mkEnumSort的调用更改为

 EnumSort eSort = con.mkEnumSort(domainName,new String[]{"X","Y"});
问题似乎消失了。你认为问题的根源是什么


非常感谢您的帮助。

自4.3.2版发布以来,Java API出现了许多错误修复。虽然没有更新的官方主版本,所以在继续之前,我必须要求您升级到不稳定分支(codeplex上提供源代码和二进制文件;尚未迁移到github)。我从这里获得了不稳定的代码(),但是无法构建二进制文件。make给出以下错误:g++-oz3shell/datalog_frontend.o。。。。。math/Polynomy/Polynomy.a util/util.a-lpthread-L/opt/local/lib-fopenmp ld:smt/smt.a(smt_setup.o)和tractic/fpa/fpa_tractics.a(fpa2bv_tractic.o)collect2:ld返回1个退出状态make:**[z3]错误1有关源代码,请从新存储库获取不稳定的版本:,我们目前正在迁移到github,源代码已经被移动(codeplex上不再有新的错误修复)。你想在什么系统上编译,你的编译器的品牌和型号是什么?我已经将我的系统更新为MacOSX 10.9.5,并安装了Java 8(除其他外),以消除任何进一步的疑虑。代码编译没有问题,但我仍然得到相同的错误。这次我无法粘贴来自JRE的更多信息(有一个日志文件)。我不知道它是否有用,如果有用,我可以尝试通过电子邮件或您喜欢的其他方式发送。我仍然无法在Windows或OSX上重现此问题。你可以通过电子邮件或使用pastebin将日志文件发送给我,以便其他人也能看到它吗?
 EnumSort eSort = con.mkEnumSort(domainName,new String[]{"X","Y"});