Multithreading Mono 4.2.2垃圾收集在多线程Linux上真的很慢/泄漏吗?
我有一个应用程序可以将3+GB的数据处理成300MB的数据。在主线程上按顺序运行每个独立的数据集,其内存使用量最高约为3.5GB,工作正常 如果在10个线程上同时运行每个数据集,我会看到以下内容:Multithreading Mono 4.2.2垃圾收集在多线程Linux上真的很慢/泄漏吗?,multithreading,mono,garbage-collection,Multithreading,Mono,Garbage Collection,我有一个应用程序可以将3+GB的数据处理成300MB的数据。在主线程上按顺序运行每个独立的数据集,其内存使用量最高约为3.5GB,工作正常 如果在10个线程上同时运行每个数据集,我会看到以下内容: 虚拟内存使用率稳步攀升,直到分配失败并崩溃。我可以看到GC正试图在堆栈跟踪中运行) CPU利用率在周期内为1000%,然后在分钟内降至100%,然后循环备份。当使用多个线程运行时,即使它们是完全独立的,应用程序的速度也很容易降低10倍 这是针对Linux的mono 4.2.2版本,支持大堆,运行在
- 虚拟内存使用率稳步攀升,直到分配失败并崩溃。我可以看到GC正试图在堆栈跟踪中运行)
- CPU利用率在周期内为1000%,然后在分钟内降至100%,然后循环备份。当使用多个线程运行时,即使它们是完全独立的,应用程序的速度也很容易降低10倍
有没有人有这方面的经验?有没有一种方法可以帮助GC摆脱它陷入的100%的常规,并且不耗尽内存?另一个信息性的小贴士:在主线程中顺序运行数据集:2小时。在后台线程中按顺序运行(一次运行1个线程):6个多小时,内存使用率和时间都要高得多。另一个有用的小贴士:在主线程中按顺序运行数据集:2小时。在后台线程中按顺序运行(一次运行1个):6个多小时,内存使用率和时间都要高得多。