Why is my GC going crazy even though I am unsubscribing from the event?

So I have this application that Starts a process and then it can also Stop the Process.

When I first start it up and click Start, the GC shows up like once and that's it. If I then click Stop and then start again the GC goes crazy as you can see down below. Why is that? I think I am unsubscribing in a bad way, or missing something.

Now what I do is this in my Start Function

public void StartServer(object parameter)
    {
        server = new Process();

        server.StartInfo.FileName = "java";
        server.StartInfo.Arguments = @"-jar " + "-Xms512M -Xmx1G spigot.jar";

        server.StartInfo.UseShellExecute = false;

        server.StartInfo.RedirectStandardOutput = true;
        server.StartInfo.RedirectStandardError = true;
        server.StartInfo.RedirectStandardInput = true;

        server.StartInfo.CreateNoWindow = false;
        server.EnableRaisingEvents = true;

        //Subscribe to the event BEFORE starting the server.
        server.OutputDataReceived += DataOutputEventHandler;
        server.ErrorDataReceived += Server_ErrorDataReceived;

        //Start the process
        server.Start();

        server.BeginOutputReadLine();
        server.BeginErrorReadLine();

        server.Exited += Server_Exited;
    }

And my stop function sends a stop string to the console so that it closes and that works perfectly.

using (StreamWriter sw = server.StandardInput)
            {
                sw.Write("stop");
                canStopServer = false;
            };

However when I start the application back up again the GC goes crazy! enter image description here

This is the EventHandler for when the process exits

private void Server_Exited(object sender, EventArgs e)
{
    canStartServer = true;
    server.Exited -= Server_Exited;
}

Am I missing something? Am I unsubscribing correctly?