The amount of memory that a Splunk forwarder uses is directly related to the number of files that the forwarder is monitoring.
How many files is the forwarder monitoring? If you are not sure, log on the the machine and run
splunk list monitor
You may see that you are monitoring many files, including inactive files. The problem is that Splunk cannot be sure those files are inactive; it will continue to keep them in its list of files to monitor. If you can refine the stanzas in inputs.conf to monitor less - or remove the inactive files from the path that Splunk is monitoring - you will probably see an immediate reduction in the memory and CPU consumption. (You will have to restart the forwarder after making these changes.)
Of course, this is just a guess, based on not much information...