我有一个AUTOSAR项目(1.1k源),我想使用C/C++ Indexer
上的eclipse oxygen(4.7.3)
插件建立索引。在获得Out of heap space error
的{{1}}之后,我想看看它真正需要多少内存,因此我配置了-xmx4g
,但这还不够。
使用-xmx10g
中的jvisualvm.exe
拍摄快照,我发现内存中保留了7 GB JDK 1.8
个对象。
运行大约10分钟后,索引没有传递1.1k文件中的第一个文件进行分析。
该如何解决此问题? 还是应该在哪里找到根本原因?
答案 0 :(得分:1)
解决此类问题的最佳方法是将您的项目缩减为可重现该问题的最小文件集,然后file a CDT bug并附加文件。
减少操作可以使用二进制搜索完成:删除项目中一半的文件,然后查看问题是否仍然存在。如果是这样,请删除剩余文件的一半,依此类推。 (这有助于在选择要删除的文件时考虑依赖顺序,即避免在删除依赖于该文件的文件之前先删除文件。)如果只剩下几个文件,则可以对其内容执行二进制搜索。理想情况下,您会得到一个最小的可重现测试用例,该测试用例分布在1-3个文件中,可能有100-200行,此时您可以将标识符重命名为通用标识符并发布代码。
在执行此操作之前,我建议您先测试最新版本(CDT 9.5.2),以确保您没有遇到已解决的问题。
答案 1 :(得分:0)
您确定-xmx已被接受..还是-Xmx。 我通常在eclipse.ini中使用以下内容:
-Xms512m
-Xmx4096m
1.1k Source听起来不多(我们还有很多),但是另一方面,某些生成的文件会占用很多内存和性能,例如Rte.c和Rte _ *。h文件(例如,此处的Rte.c约为10万个LOC)。结合基于AST的语法和语义突出显示的CDT功能会占用内存和性能。