A log of data is cached--data, queries, tables, indexes, execution plans, etc.--to speed up future executions, and can take a fair amount of memory. If your database has a lot of data, this can be the case.
At the same time, SQL Server will take a large chunk of RAM for the transaction, and may not release it until it absolutely needs to. Holding onto it allows for future queries to be executed faster.
Now, if you want to limit the amount of memory the service can use, that's fairly easy to do.
If you're using SQL Server Management Studio, open the properties for the server (
right click > Properties), and go to "Memory". You'll see settings for
Maximum server memory. Feel free to set the Maximum to a lower number, matching what your desired maximum is.
If you want to do it by SQL:
EXEC sp_configure 'show advanced option', 1;
-- Set these to your desired values
EXEC sp_configure 'min server memory (MB)', 0;
EXEC sp_configure 'max server memory (MB)', 1024;
RECONFIGURE WITH OVERRIDE;