草庐IT

overlay2占用过高

全部标签

c++ - 在 C++ 中,为什么仅包含 union 及其基类实例的派生类占用的内存大于 union 的大小?

更具体地说,一个类继承自一个空类,只包含一个union体,其成员包括基本无数据类的实例,比union体占用更多的内存。为什么会发生这种情况,是否有任何方法可以避免消耗额外的内存?下面的代码说明了我的问题:#includeclassempty_class{};structbig:publicempty_class{union{intdata[3];empty_classa;};};structsmall{union{intdata[3];empty_classa;};};intmain(){std::cout此代码的输出,当使用gcc版本7.3.0编译时使用-std=c++17编译(虽然

c++ - unique_ptr 的内存占用

这个问题在这里已经有了答案:Howcanstd::unique_ptrhavenosizeoverhead?(2个答案)关闭7年前。unique_ptr实例(没有自定义删除器)是否具有与原始指针相同的内存占用空间,或者实例存储的不仅仅是指针?

c++ - 调用空类的构造函数真的会占用内存吗?

假设我有一个类classEmpty{Empty(inta){cout然后我调用它使用intmain(){Empty(2);return0;}这会导致在堆栈上分配任何内存以创建“空”对象吗?显然,需要将参数压入堆栈,但我不想招致任何额外的开销。基本上我将构造函数用作静态成员。我想这样做的原因是模板。实际代码看起来像templateclassFuncName{templateFuncName(constT&value){if(which==1){//specificbehavior}elseif(which==2){//otherspecificbehavior}}};这让我可以写类似的东

c++ - boost::asio::io_service 定时器和帖子占用的队列长度

我是boost::asio的新手,但我正在从事一个已经存在几年并广泛使用asio的项目。我目前的任务是添加关于系统正在做的各种事情的定期指标。其中一项指标是观察boost::asio::io_service工作队列和定时器队列在任意运行时间段的深度。所以我需要能够询问boost:asio::io_service对象它的队列中有多少东西。为了说明我的要求,请考虑以下内容:boost::asio::io_serviceasio_service;asio_service.post(boost::bind(do_work,"eat"));asio_service.post(boost::bin

C++ 处理过高的精度

我目前正在查看codewhichdoesmulti-precisionfloating-pointarithmetic.为了正常工作,该代码需要在明确定义的点将值降低到最终精度。因此,即使中间结果计算为80bitextendedprecision浮点寄存器,在某些时候它必须四舍五入为64bitdouble用于后续操作。代码中使用宏INEXACT来描述这个需求,但没有一个完美的定义。gccmanual提到-fexcess-precision=standard作为强制强制转换和赋值操作定义明确的精度的方法。然而,它也写道:‘-fexcess-precision=standard’isnot

java - rmi.transport.tcp.tcptransport Connectionhandler 占用大量 CPU

我正在运行第三方RMI-Server应用程序,它只提供一种方法("getImage()"返回一个图像作为byte[])。这个方法的实现(通过SOAP-WS)由我提供。运行此RMI服务器的问题是CPU消耗高(用jvisualvm测量):65%的cpu时间进入"sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run()"以15%位居第二的是"sun.net.www.http.KeepAliveCache.run()"。“真实”工作(缩放图像)排在第四位。服务器在win2003服务器上运行。我想资源/连接处理有问题??但这是实现问题还

windows - 自己的程序写入 300 个小文件。在那段时间里,explorer.exe 占用了近 100% 的 CPU 时间

我开发的C#应用程序将300个小(1k)文件写入本地文件系统(NTFS)。在此期间,explorer.exe使用高达100%的CPU时间。我已经整理好的东西:确保没有资源管理器窗口打开显示目标文件夹排除目标文件夹的索引为整个驱动器排除索引停止并禁用“Windows搜索”服务(SearchIndexer.exe)所有这些都没有效果。当我使用SysinternalsProcessExplorer时,我看到explorer.exe的一个繁忙线程大部分时间都在声明:ntdll.dll!RtIFreeUnicodeString+0x1370它的堆栈看起来像这样:0msvcrt.dll!memcp

c# - 我怎样才能占用内存来测试另一个应用程序?

所以我想在低内存条件下测试我的Windows应用程序,我发现最简单的方法是创建另一个只占用内存的应用程序(控制台应用程序)。我创造了这个怪物:while(true){try{Marshal.AllocHGlobal(1024);}catch{}}但它只有3.7GB。然后我打开此应用程序的另一个实例,它又恢复正常。如何防止垃圾收集器收集我的分配?或者:如何在我的通用Windows应用程序上测试低内存条件? 最佳答案 您可以尝试将GCSettings延迟模式更改为SustainedLowLatency,这将完全避免垃圾收集,除非系统将耗

windows - 找出哪些文件夹和文件在 Windows 计算机上占用的空间最多?

1)已经存在哪些好的软件可以让人们(最好是视觉上)看到哪些文件夹和文件占用了计算机上最多的空间(与WindowsVista兼容)2)假设我想自己编写一个程序,我可以使用哪些开源工具来开始?谢谢! 最佳答案 1)你可以试试WinDirStat:http://windirstat.info/2)我认为您不需要开源工具,您可以使用Java或.NET编写它,只需使用这些语言已经提供的工具即可。 关于windows-找出哪些文件夹和文件在Windows计算机上占用的空间最多?,我们在StackOv

c++ - 一种使键盘事件队列既响应又不占用整个 CPU 能力的方法

我正在制作Sdl游戏,它是2d射击游戏。我使用SDL导入表面,使用OpenGL在屏幕上绘制它们(这样做是因为它比SDL工作得更快)。我有两个线程在运行,一个用于处理内容和渲染,另一个用于输入。基本上,处理一个占用我CPU的1-2%,而输入循环占用25%(在四核上,所以它是1个全核)。我尝试在每个while(SDL_PollEvent(&keyevent))之前执行SDL_Delay(1)并且它有效!将整个过程的CPU负载降低到3%。然而,有一个令人讨厌的副作用。整个程序的输入是有缺陷的:它没有检测到所有按下的键,例如,为了让角色移动,有时需要长达3秒的敲击键盘才能使用react。我也尝