我听说在C++动态内存分配的上下文中使用了几次"内存碎片"这个术语.我发现了一些关于如何处理内存碎片的问题,但找不到直接处理它本身的问题.所以:
也:
我定期用R调用来清理R中的内存rm(list=ls()).
之后我需要打电话给垃圾收集器gc()吗?
这两个功能有什么区别?是否gc()要求rm()某些变量?
我在R(在Windows下)运行我的代码,其中涉及大量的内存数据.我试图用来rm(list=ls())清理内存,但似乎内存仍然被占用,我无法重新运行我的代码.我试图关闭R并重新启动R,但它是一样的,似乎内存仍然被占用,因为当我运行代码它说它不能分配内存(但它可能在第一次).重新启动电脑后,内存似乎只清理了.
有没有办法清理内存,以便我可以重新运行我的代码而不必每次都重新启动我的电脑?
我正在进行大规模的机器学习,但是由于R内存占用,我的计算速度变慢了.
我清除了我的对象,我也尝试gc()了结果:
used (Mb) gc trigger (Mb) max used (Mb)
Ncells 4460452 231.5 15288838 1116.6 36599071 1954.7
Vcells 29572776 349.4 324509788 2712.9 350796378 3376.4
Run Code Online (Sandbox Code Playgroud)
我的任务管理器显示R会话仍然分配超过3GB的内存,我的电脑仍然很慢.
如何释放R占用的内存?(我不想重启电脑)
我有一个闪亮的应用程序,允许每个用户选择要加载的数据集。除了内存使用情况外,应用程序中的所有内容都运行良好。会话结束并且用户关闭 Web 浏览器后,Shiny 不会将可用内存归还给正在运行的计算机。最终,在访问它足够多次之后,它就会耗尽内存。
在传统的 R 中,我经常在删除数据后频繁调用 gc() 来解决这个问题。然而,这似乎在我闪亮的应用程序中不起作用。
几个小时的谷歌搜索并没有带来任何有见地的东西。在这种情况下有没有一种干净的方法来释放未使用的内存?