草庐IT

memory-overcommitment

全部标签

php - 在 PHP 中安全地捕获 'Allowed memory size exhausted' 错误

我有一个将JSON返回给客户端的网关脚本。在脚本中我使用set_error_handler捕获错误并且仍然有一个格式化的返回。它会出现“允许的内存大小已用尽”错误,但不会使用ini_set('memory_limit','19T')之类的内容来增加内存限制。,我只想返回用户应该尝试其他东西,因为它曾经占用大量内存。有什么好的方法可以捕获fatalerror吗? 最佳答案 作为thisanswer建议,您可以使用register_shutdown_function()注册一个回调来检查error_get_last()。您仍然需要管理从

c++ - 2016 年之前的 Valgrind : Memory still reachable with trivial program using <iostream>

编辑:我已经投票决定关闭这是不是现在不正确。2016年3月,Valgrind获得了一个选项“--run-cxx-freeres=”(默认为yes)。这将调用libstdc++函数来释放用于iostream之类的一次性分配。如果您使用的是2016年后的Valgrind和libstdc++,您将获得==9356==HEAPSUMMARY:==9356==inuseatexit:0bytesin0blocks==9356==totalheapusage:1allocs,1frees,72,704bytesallocated==9356====9356==Allheapblockswerefr

c++ - 是否有 std::shared_ptr 的非原子等价物?为什么 <memory> 中没有一个?

这是一个由两部分组成的问题,都是关于std::shared_ptr的原子性的。:1.据我所知,std::shared_ptr是中唯一的智能指针那是原子的。我想知道是否有std::shared_ptr的非原子版本可用(我在中看不到任何内容,因此我也愿意接受标准之外的建议,例如Boost中的建议)。我知道boost::shared_ptr也是原子的(如果BOOST_SP_DISABLE_THREADS未定义),但也许还有另一种选择?我正在寻找与std::shared_ptr具有相同语义的东西,但没有原子性。2.我明白为什么std::shared_ptr是原子的;这有点好。然而,它并不适用于

c++ - 什么是 “memory stomp” ?

我刚来acrossthisblogpost其中提到“踩踏内存”:aC++programwhichiseasilycapableofstompingmemory(somethingyouprobablyhaveneverevenheardofifyouwereborninamanagedcodeworld.)其实我从来没有听说过!那么,这是什么,一个内存跺脚,跺脚内存?什么时候发生? 最佳答案 当一段代码操作内存而没有意识到另一段代码正在以一种冲突的方式使用该内存时,内存就会被“踩踏”。有几种常见的方法可以压制内存。例如,分配100字

ios - 是否可以调试 "Terminated due to memory error"?

在我的应用程序运行时的某个(一致)点,我始终收到xcode错误消息Terminatedduetomemoryerror.我找不到导致错误的代码,但我可以知道错误附近的代码(使用断点)。错误是在我的实现中返回某个单元格后直接引起的-(UITableViewCell*)tableView:(UITableView*)tableViewcellForRowAtIndexPath:(NSIndexPath*)indexPathUITableViewDataSource委托(delegate)方法。我可以确认它返回了一个有效的UITableViewCell,但我认为解释和发布整个方法会浪费您的时

php - memory_get_peak_usage() 与 "real usage"

如果real_usage参数设置为true,PHPDOCS说它将获得系统分配的实际内存大小。如果是false会得到emalloc()报告的内存这两个选项中的哪一个返回最大值。相对于php.ini中的内存限制值分配的内存?我想知道脚本有多接近该限制。 最佳答案 好的,让我们用一个简单的脚本来测试一下:ini_set('memory_limit','1M');$x='';while(true){echo"notreal:".(memory_get_peak_usage(false)/1024/1024)."MiB\n";echo"rea

PHP Composer 更新 "cannot allocate memory"错误(使用 Laravel 4)

我就是解决不了这个问题。我正在使用Linode1GRAM基本计划。试图通过Composer安装一个包,它不让我。我的内存限制在PHP.ini上设置为“-1”我还能做些什么来安装它吗?LoadingcomposerrepositorieswithpackageinformationUpdatingdependencies(includingrequire-dev)-Installingthujohn/rss(dev-masterdf80a7d)Downloading:100%PHPFatalerror:Uncaughtexception'ErrorException'withmessag

memory - 在 Linode 512 VPS 上运行 MongoDB 的可行性?

我已阅读MongoDB文档,其中包含有关32位系统的警告;特别是Mongo的可用RAM上限为2GB。所以我想知道该声明是否意味着在低内存设置中运行MongoDB,例如Linode的512mb基于RAM的VPS。我怀疑这很重要,但使用64位发行版供以后添加资源。是否有任何警告或有人会建议在MongoDB的VPS中选择最少的RAM?我知道项目需求会影响到这一点,但我的意思是最低限度,即使没有启动MongoDB也会很可笑。 最佳答案 我在一些小型生产站点上使用它,这些站点在我的Linode512中运行,它几乎不使用任何内存,只有大约5-6

C++11 memory_order_acquire 和 memory_order_release 语义?

http://en.cppreference.com/w/cpp/atomic/memory_order和其他C++11在线引用资料,将memory_order_acquire和memory_order_release定义为:获取操作:否阅读在当前线程中可以在此加载之前重新排序。发布操作:否写道在当前线程中可以在此存储后重新排序。这似乎允许执行获取后写入之前获取操作,这对我来说也很奇怪(通常获取/释放操作语义限制所有内存操作的移动)。相同的在线资源(http://en.cppreference.com/w/cpp/atomic/atomic_flag)表明可以使用C++原子和上述宽松的

C++11 memory_order_acquire 和 memory_order_release 语义?

http://en.cppreference.com/w/cpp/atomic/memory_order和其他C++11在线引用资料,将memory_order_acquire和memory_order_release定义为:获取操作:否阅读在当前线程中可以在此加载之前重新排序。发布操作:否写道在当前线程中可以在此存储后重新排序。这似乎允许执行获取后写入之前获取操作,这对我来说也很奇怪(通常获取/释放操作语义限制所有内存操作的移动)。相同的在线资源(http://en.cppreference.com/w/cpp/atomic/atomic_flag)表明可以使用C++原子和上述宽松的