Skip to content

Commit 2dc1528

Browse files
committed
* We can now track how much memory we gain (or lose)
* Added more GUI components
1 parent 1d60783 commit 2dc1528

File tree

6 files changed

+104
-24
lines changed

6 files changed

+104
-24
lines changed

MemPlus/Classes/RamController.cs

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
using System.Threading.Tasks;
2+
3+
namespace MemPlus.Classes
4+
{
5+
internal class RamController
6+
{
7+
private readonly RamMonitor _ramMonitor;
8+
9+
internal double RamSavings { get; private set; }
10+
11+
internal RamController(RamMonitor monitor)
12+
{
13+
RamSavings = 0;
14+
_ramMonitor = monitor;
15+
}
16+
17+
internal async Task Clear(bool filesystemcache)
18+
{
19+
await Task.Run(async () =>
20+
{
21+
bool wasEnabled = _ramMonitor.Enabled;
22+
if (wasEnabled)
23+
{
24+
_ramMonitor.Stop();
25+
}
26+
27+
await _ramMonitor.UpdateRamUsage();
28+
29+
double oldUsage = _ramMonitor.RamUsage;
30+
31+
//Clear working set of all processes that the user has access to
32+
MemPlus.EmptyWorkingSetFunction();
33+
//Clear file system cache
34+
MemPlus.ClearFileSystemCache(filesystemcache);
35+
36+
await _ramMonitor.UpdateRamUsage();
37+
double newUsage = _ramMonitor.RamUsage;
38+
39+
RamSavings = oldUsage - newUsage;
40+
41+
if (wasEnabled)
42+
{
43+
_ramMonitor.Start();
44+
}
45+
});
46+
}
47+
}
48+
}

MemPlus/Classes/RamMonitor.cs

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,14 @@ internal sealed class RamMonitor
1212
private readonly ComputerInfo _info;
1313
private readonly SfCircularGauge _gauge;
1414
private readonly Dispatcher _dispatcher;
15-
1615
private readonly Timer _ramTimer;
1716

17+
internal double RamUsage { get; private set; }
18+
internal double RamUsagePercentage { get; private set; }
19+
internal double RamTotal { get; private set; }
20+
21+
internal bool Enabled => _ramTimer.Enabled;
22+
1823
internal RamMonitor(Dispatcher dispatcher, SfCircularGauge gauge)
1924
{
2025
_info = new ComputerInfo();
@@ -47,26 +52,26 @@ internal void Stop()
4752

4853
private async void OnTimedEvent(object source, ElapsedEventArgs e)
4954
{
50-
double test = await GetRamUsage();
55+
await UpdateRamUsage();
5156
_dispatcher.Invoke(() =>
5257
{
53-
_gauge.Scales[0].Pointers[0].Value = test;
54-
_gauge.GaugeHeader = "RAM usage (" + test.ToString("F2") + "%)";
58+
_gauge.Scales[0].Pointers[0].Value = RamUsagePercentage;
59+
_gauge.GaugeHeader = "RAM usage (" + RamUsagePercentage.ToString("F2") + "%)";
5560
});
5661
}
5762

58-
private async Task<double> GetRamUsage()
63+
internal async Task UpdateRamUsage()
5964
{
60-
double val = await Task.Run(() =>
65+
await Task.Run(() =>
6166
{
6267
double total = Convert.ToDouble(_info.TotalPhysicalMemory);
6368
double usage = total - Convert.ToDouble(_info.AvailablePhysicalMemory);
64-
6569
double perc = usage / total * 100;
6670

67-
return perc;
71+
RamUsage = usage;
72+
RamUsagePercentage = perc;
73+
RamTotal = total;
6874
});
69-
return val;
7075
}
7176
}
7277
}

MemPlus/MemPlus.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@
6969
<DependentUpon>App.xaml</DependentUpon>
7070
<SubType>Code</SubType>
7171
</Compile>
72+
<Compile Include="Classes\RamController.cs" />
7273
<Compile Include="Classes\MemPlus.cs" />
7374
<Compile Include="Classes\RamMonitor.cs" />
7475
<Compile Include="Classes\StyleManager.cs" />

MemPlus/Windows/MainWindow.xaml

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,34 @@
1717
</Grid.RowDefinitions>
1818
<Menu>
1919
<MenuItem Header="File">
20-
20+
<MenuItem Header="Export">
21+
<MenuItem Header="RAM usage" />
22+
<MenuItem Header="Application logs" />
23+
</MenuItem>
24+
<Separator />
25+
<MenuItem Header="Exit" />
2126
</MenuItem>
22-
23-
<MenuItem Header="Tools">
2427

28+
<MenuItem Header="Tools">
29+
<MenuItem Header="RAM Analyzer"></MenuItem>
30+
<Separator />
31+
<MenuItem Header="Logs">
32+
<MenuItem Header="Application logs" />
33+
</MenuItem>
34+
<Separator />
35+
<MenuItem Header="Settings" />
2536
</MenuItem>
26-
27-
<MenuItem Header="Help">
2837

38+
<MenuItem Header="Help">
39+
<MenuItem Header="Help" />
40+
<Separator />
41+
<MenuItem Header="Check for updates" />
42+
<Separator />
43+
<MenuItem Header="Homepage" />
44+
<MenuItem Header="License" />
45+
<Separator />
46+
<MenuItem Header="Donate" />
47+
<MenuItem Header="About" />
2948
</MenuItem>
3049

3150
</Menu>

MemPlus/Windows/MainWindow.xaml.cs

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,30 +11,38 @@ namespace MemPlus.Windows
1111
public partial class MainWindow
1212
{
1313
private readonly RamMonitor _monitor;
14+
private readonly RamController _ramController;
1415

1516
public MainWindow()
1617
{
1718
InitializeComponent();
1819
ChangeVisualStyle();
20+
1921
_monitor = new RamMonitor(Dispatcher, CgRamUsage);
2022
_monitor.Start();
23+
24+
_ramController = new RamController(_monitor);
2125
}
2226

2327
internal void ChangeVisualStyle()
2428
{
2529
StyleManager.ChangeStyle(this);
2630
}
2731

28-
private void BtnClearMemory_OnClick(object sender, RoutedEventArgs e)
32+
private async void BtnClearMemory_OnClick(object sender, RoutedEventArgs e)
2933
{
3034
try
3135
{
32-
//Clear working set of all processes that the user has access to
33-
Classes.MemPlus.EmptyWorkingSetFunction();
34-
//Clear file system cache
35-
Classes.MemPlus.ClearFileSystemCache(ChbFileSystemCache.IsChecked != null && ChbFileSystemCache.IsChecked.Value);
36-
37-
MessageBox.Show("Your memory has now been cleared of any non-essential data.", "MemPlus",MessageBoxButton.OK, MessageBoxImage.Information);
36+
await _ramController.Clear(ChbFileSystemCache.IsChecked != null && ChbFileSystemCache.IsChecked.Value);
37+
double ramSavings = _ramController.RamSavings / 1024 / 1024;
38+
if (ramSavings < 0)
39+
{
40+
MessageBox.Show("Looks like your RAM usage has increased with " + Math.Abs(ramSavings).ToString("F2") + "MB!", "MemPlus", MessageBoxButton.OK, MessageBoxImage.Information);
41+
}
42+
else
43+
{
44+
MessageBox.Show("You saved " + ramSavings.ToString("F2") + "MB of RAM memory!", "MemPlus", MessageBoxButton.OK, MessageBoxImage.Information);
45+
}
3846
}
3947
catch (Exception ex)
4048
{

README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
# MemPlus
2-
3-
This is a meme project, created simply to demonstrate how pointless and dangerous these so called memory optimizers are. They usually cost plenty of money but now you can totally fuck up your system using this free to use and download software.
2+
This project was created to mock all paid memory optimizers. MemPlus is an entirely free, completely functional 'memory optimizer' that will 'safely' free up non-essential memory in Windows.
43

54
# Requirements
65
* [Visual Studio](https://vistualstudio.com)
76
* [.NET Framework 4.7.1](https://www.microsoft.com/en-us/download/details.aspx?id=56116)
87
* [Syncfusion](https://syncfusion.com) (Community edition available)
98

109
# Anything else?
11-
1210
Yes. Don't fall for these memory optimizers that will speed up your system by 100000% percent scams. This will actually free up your memory, but it will cost you dearly in performance and might cause system instability. Do not use these tools on any essential devices. And we, CodeDead, are not responsible for any damages that this type of software can cause to your system.
1311

1412
# License
@@ -17,4 +15,5 @@ Yes. Don't fall for these memory optimizers that will speed up your system by 10
1715
# About
1816

1917
Brought to you by CodeDead:
18+
2019
https://codedead.com/

0 commit comments

Comments
 (0)