This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TMS320C6657:CCS 9.3泄露内存

Guru**** 2582405 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/876284/ccs-tms320c6657-ccs-9-3-leaks-memory

器件型号:TMS320C6657

工具/软件:Code Composer Studio

版本:9.3.0.00012

它使用的容量超过1GB (!!!!!) 首次启动时、但在使用它几个小时左右之后、它使用超过2GB。

检查您的参考资料。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这是在任何特定平台上吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Windows 10内部版本1909。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我还没有(目前)经历过这种内存泄漏。 虽然正如您所说的、它开始消耗了相当多的 RAM、但我没有看到您所描述的急剧增加、尽管在几个小时内大量使用。 您能否启用'Window -> Preferences -> General'下的"Show heap status"选项、然后在 CCS 使用超过2GB+时提供 CCS IDE 右下角(-ish)显示的堆使用情况的详细信息?

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我当前的做法是、这是由表达式窗口造成的。  添加表达式会增加 RAM 的使用量。  删除表达式后、RAM 不会释放。

    我们的项目有数千个对象(有些对象相当大)、因此每当我们将对象加载到表达式窗口中时、它都会使用大量 RAM。  我刚加载了几个对象、堆从348 MB 变为468 MB、任务管理器内存使用量高达1.5G。  删除这些对象后堆不会减少。

    我在手持编码 C++的时代已经很长时间了、其中程序仅使用几 MB、而且速度非常快。  现在,我们对 Java“祝福”了,一切都是一个膨胀的、不易管理的内存日志,打开一个简单的编辑器窗口需要5秒钟。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    经过长时间的调试会话后、内存使用量现在几乎为2GB。  堆显示了203M 的1228M。  运行垃圾收集对系统内存没有影响。  在某个地方、肯定会发生严重泄漏。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="lemmwinks"]经过长时间的调试会话后,内存使用率现在几乎为2GB。

    当 CCS 空闲时、系统内存使用量是否增加? 还是在 CCS 的有效使用期间增长? 在我主动使用 CCS 时、我的内存使用率可能会激增。 但是、当我让它空闲时、它不会增长... 并将自行减小一个位。

    [引用 user="lemmibwinks"]堆显示了203M 的1228M。

    请注意、在 CCSv9.3中、我们将 最大堆容量 从768MB 增加到了2048MB。 因此、CCS 的整体系统内存使用量将大于您在之前版本中看到的内存使用量。 768m 的大小始终较小 、但我们在设置最大值的大小方面受到限制、因为 CCS 过去是 Windows 上的32位应用程序。 但 CCSv9及更高版本是一个64位应用程序。 这使我们能够增加最大堆容量(我们从 CCSv9.3开始)。 这提高了 CCS 的性能、并极大地减少 了过去弹出的"Java 低堆"和"内存不足"类型错误

    这种做法的副作用是、随着最大堆容量的增加、堆容量的增加使得堆容量的增加大于过去的容量、系统内存使用量也会增加。

    [引用 user="lemmiwinks"]运行垃圾收集对系统内存没有影响。

    这会清除已使用的堆数量、但不会清除整个堆大小。  

    默认情况下、堆不会自行收缩。 但可以使用 JVM 的其他参数来支持此功能:

    https://stackoverflow.com/questions/22480749/how-to-shrink-java-heap-space

    https://stackoverflow.com/questions/4952568/is-there-a-way-to-lower-java-heap-when-not-in-use

    另一种选择是将最大堆容量值降低到更适合的值。 我认为原来的768m 太小了、但它和电流值中间有些东西。