本文将介绍基于Windows的C++应用程序随着时间消耗更多的CPU的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于c#–如何将基于SQLServ
本文将介绍基于Windows的C ++应用程序随着时间消耗更多的CPU的详细情况,。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于c# – 如何将基于SQL Server身份验证的应用程序切换到基于Windows的身份验证应用程序、c# – 适用于Windows的通用应用程序10.如何触发后台任务?、iphone – 适用于Windows的应用程序加载器、javaw.exe进程在Windows 64消耗更多的内存?的知识。
本文目录一览:- 基于Windows的C ++应用程序随着时间消耗更多的CPU
- c# – 如何将基于SQL Server身份验证的应用程序切换到基于Windows的身份验证应用程序
- c# – 适用于Windows的通用应用程序10.如何触发后台任务?
- iphone – 适用于Windows的应用程序加载器
- javaw.exe进程在Windows 64消耗更多的内存?
基于Windows的C ++应用程序随着时间消耗更多的CPU
我们在Windows上有一个基于C ++的multithreading应用程序,使用WinPCAP库实时捕获networking数据包,然后处理这些数据包以监视networking。 此应用程序旨在运行24×7。 我们的应用程序很容易消耗7-8 GB的RAM。
我们正在观察的问题:可以说应用程序正在监视100Mbps的networkingstream量,并占用60%的cpu。 我们观察到,当应用程序持续运行一两天,应用程序的cpu消耗增加到70-80%,尽pipe它仍在处理100 Mbps的通信量(执行相同的工作量) 。
我们已经尝试使用ProcessExplorer将此问题debugging到线程级别,并注意到数据包捕获线程随着时间的推移开始消耗更多的cpu。 即使重新启动应用程序后,此问题仍未解决。 只有机器重启才能解决问题。
我们发现这个问题很容易在Windows 2012 R2服务器操作系统上过夜运行。 在Windows 7中,这个问题发生,但几天。
如何挂钩Windows中的TCP堆栈以侦听和修改数据包?
零拷贝机制和libpcap
C中的数据包嗅探器适用于所有虚拟机
是否有可能在Linux上使用packet_mmap没有root权限?
SO_ATTACH_REUSEPORT_CBPF套接字选项意外的行为
任何想法可能导致这个?
提前致谢
最佳的OS应用程序出站SMTP数据包捕获?
禁用以太网VLANfilter以启用捕获原始数据包
garena客户端如何build立networking?
内存分配呢? 因为使用大量内存,可能会造成内存分割问题,所以如果您执行多次缓冲区分配/重新分配,这当然会导致处理器寻找和分配可用空间的主要成本。
我终于找到了上述行为的原因:它是导致它的winpcap代码。 替换之后,我们没有观察到这种行为。
c# – 如何将基于SQL Server身份验证的应用程序切换到基于Windows的身份验证应用程序
1-如果用户选择WINDOWS模式,是否需要创建特定于应用程序的用户?如果是,请指导如何创建新用户.
2-在整个应用程序中,我使用了带有“用户名”的连接字符串(安装时安装时创建的应用程序专用用户)和“密码”.我是否需要创建另一个连接字符串才能达到目的?
解决方法
在大多数情况下,您将应用程序部署为服务,Windows服务或IIS应用程序.然后它在特定的Windows系统帐户下运行,您必须在sql服务器上使用该帐户.
如果您不使用Windows系统帐户,您将面临密码过期,安全存储密码,无需使用用户名以运行其他可执行文件的问题.
将用户添加到Windows,只搜索:如何将用户帐户添加到Windows [版本],但考虑首先使用系统帐户(例如本地服务,网络服务)是微不足道的.
[2]我建议重构您的应用程序,以便您通过名称引用连接字符串.
您可能希望将配置管理与可执行文件分开.即一个应用程序准备配置,另一个使用它.例如,安装程序写入配置字符串,应用程序使用配置字符串,只要它允许访问数据库,应用程序就不关心内部的内容.
c# – 适用于Windows的通用应用程序10.如何触发后台任务?
我正在注册这样的后台任务
var builder = new BackgroundTaskBuilder(); builder.Name = "MyToastNotificationBackgroundTask"; builder.TaskEntryPoint = "Tasks.MyToastNotificationBackgroundTask"; builder.SetTrigger(new ToastNotificationActionTrigger()); BackgroundTaskRegistration task = builder.Register();
显示通知
ToastNotifier toastNotifier = Toastnotificationmanager.CreatetoastNotifier(); ScheduledToastNotification myToastNotificaton = new ScheduledToastNotification(this.myToastXml,DateTime.Now.AddMinutes(1),TimeSpan.FromMinutes(60),2); myToastNotificaton .Id = "toast_54ahk36s"; toastNotifier.AddToSchedule(myToastNotificaton);
在app清单中
<Extensions> <Extension Category="windows.backgroundTasks" EntryPoint="Tasks.MyToastNotificationBackgroundTask"> <BackgroundTasks> <Task Type="systemEvent" /> </BackgroundTasks> </Extension> </Extensions>
在吐司模板xml动作按钮是
<actions> <input id="message" type="text" placeholderContent="200" /> <action activationType="background" content="Count" arguments="count" /> </actions>
后台任务itsetf
namespace Tasks { public sealed class MyToastNotificationBackgroundTask : IBackgroundTask { public void Run(IBackgroundTaskInstance taskInstance) { var details = taskInstance.TriggerDetails as ToastNotificationActionTriggerDetail; ... } } }
我无法理解如何在通知模板操作按钮上指定activationype =“background”与MyToastNotificationBackgroundTask任务相关?我无法找到相关信息.
有人请分享你的知识.也许你有一个工作的例子或smf.任何帮助将不胜感激.提前致谢.
解决方法
I can’t understand how specifying activationype=”background” on a
notification templates action button is relating to
MyToastNotificationBackgroundTask task? i can’t find relevant info on
that.
后台任务(ToastNotificationActionTrigger)的触发器类型是将Toast操作连接到后台任务的内容.当用户点击操作时,app会查找具有ToastNotificationActionTrigger触发器的后台任务,并在找到时运行.
我使用你的代码,但无法重现问题,触发器工作正常.我的猜测是你已经注册了一个具有该名称但没有正确触发器类型的任务(先尝试取消注册) – 或者 – 你在toast xml(activationType字段)中有拼写问题.
iphone – 适用于Windows的应用程序加载器
解决方法
javaw.exe进程在Windows 64消耗更多的内存?
我从Windows 7(32位)切换到Windows 7(64位),因为我添加了4 GB的RAM到我的2 GB。 现在,当我运行Eclipse Juno EE 。 在Windows任务pipe理器中,我看到进程javaw.exe正在吃〜380 MB的RAM,我以前没有看到,当我使用32位操作系统。 我甚至没有尝试吃任何项目。 我写了这个代码:
public static void main(String[] args) { Runtime runtime = Runtime.getRuntime(); System.out.println(runtime.maxMemory()); }
它显示了我的JVM is allocated 1 338 507 264 bytes 。
这意味着当我运行项目时,这个过程可能会消耗高达1.3 Gb的RAM?
我将来有什么问题吗?
Eclipse中debugging模式下的Apache Ofbiz中的TemplateNotFoundexception(Ubuntu)
找不到类javacard.framework.service.CardRemoteObject
Eclipse Luna在Ubuntu的新项目上崩溃
包含path在使用pathvariables时不扩展
在Windows上创build.so文件,以便在PHP中使用C ++静态库
在Eclipse中添加openCV到java buildpath
区分AltGr和Ctrl + Alt
在PHP和Eclipse中设置path映射
如何在Eclipse中打开文件并跳转到特定的行?
有关在亚马逊云ec2上设置git的虚拟问题
64位版本将使用-server JVM,并具有更高的默认最大堆大小。 Windows 32位版本默认使用-client JVM,默认情况下它使用较少的资源,因为它设计为在较小的机器上运行,所以对于长时间运行的程序,结果往往较慢(客户端JVM具有较快的加载速度运行像小程序的程序)
如果您设置了最大堆大小,那么如果您有最新版本的Java 6或Java 7,则应该使用大致相同的内存量。
Runtime.maxMemory() :
返回Java虚拟机将尝试使用的最大内存量。
这是一个上限。 这并不意味着JVM预先分配了大量的内存。 当您创建对象并将其保留时,您的进程的内存使用量将会增加,直到您可以配置的最大堆大小。
在Windows任务管理器中,我看到进程javaw.exe正在吃〜380 MB RAM
有很多方面的内存使用情况:有地址空间,虚拟内存,物理内存等,根据你在任务管理器看到的列,你在那里看到的数字可能有许多不同的含义之一。
我从Windows 7(32位)切换到Windows 7(64位)
通常,64位代码的确需要比等效的32位代码更多的内存。 一方面,指针更宽,占用更多的空间。 这适用于JVM,就像它对任何其他进程一样。 但是,JVM会采取一些措施来降低影响。 一个这样的措施是CompressedOops 。
今天关于基于Windows的C ++应用程序随着时间消耗更多的CPU的分享就到这里,希望大家有所收获,若想了解更多关于c# – 如何将基于SQL Server身份验证的应用程序切换到基于Windows的身份验证应用程序、c# – 适用于Windows的通用应用程序10.如何触发后台任务?、iphone – 适用于Windows的应用程序加载器、javaw.exe进程在Windows 64消耗更多的内存?等相关知识,可以在本站进行查询。
本文标签: