10

In Mac I use purge to free up some memory. What is equivalent to it in Linux(Ubuntu Server)? apt-get install purge gave me nothing. If you are no familiar with Mac's purge here is it's man page:

purge(8) BSD System Manager's Manual purge(8) NAME purge -- force disk cache to be purged (flushed and emptied) SYNOPSIS purge DESCRIPTION Purge can be used to approximate initial boot conditions with a cold disk buffer cache for performance analysis. It does not affect anonymous mem- ory that has been allocated through malloc, vm_allocate, etc. SEE ALSO sync(8), malloc(3) September 20, 2005 
6
  • 6
    What makes you think you need to? Linux has pretty good memory management, it should be able to do this on a need-to-do basis. Commented Jun 27, 2014 at 18:05
  • 16
    Note that freeing up memory like this is used to make the machine go slower, not faster. Its if you want to benchmark something on a cold cache. Commented Jun 27, 2014 at 18:14
  • I have a Java process eating all of my 24GB RAM. I can't terminate it. I don't know how to open a little space for other processes? Commented Jun 27, 2014 at 18:37
  • 1
    see linuxatemyram.com Commented Jun 27, 2014 at 21:52
  • 3
    @Mohsen, If the java process has already eaten up all of your ram, chances are that the kernel has already dropped all caches to give more memory to java. Purging, or dropping caches, won't give you any more free memory of a process has already demanded all of it. Commented Jun 27, 2014 at 23:00

1 Answer 1

16

This can be do the same thing with purge:

sync && echo 3 > /proc/sys/vm/drop_caches 

From man proc:

/proc/sys/vm/drop_caches (since Linux 2.6.16) Writing to this file causes the kernel to drop clean caches, dentries and inodes from memory, causing that memory to become free. To free pagecache, use echo 1 > /proc/sys/vm/drop_caches; to free dentries and inodes, use echo 2 > /proc/sys/vm/drop_caches; to free pagecache, dentries and inodes, use echo 3 > /proc/sys/vm/drop_caches. Because this is a nondestructive operation and dirty objects are not freeable, the user should run sync(8) first. 

And from man sync:

NAME sync - flush file system buffers DESCRIPTION Force changed blocks to disk, update the super block. 
7
  • 7
    My proc(5) manpage (from 2013-09-04) has this important information added: ... causing that memory to become free. This can be useful for memory management testing and performing reproducible filesystem benchmarks. Because writing to this file causes the benefits of caching to be lost, it can degrade overall system performance. Commented Jun 27, 2014 at 18:28
  • It didn't free up any memory for me. All my memory is being used by a Java process. Does it impact Java memory cache too? Commented Jun 27, 2014 at 18:39
  • @Mohsen: May be your Java process does not cache anything. What is output of free -m? Commented Jun 27, 2014 at 18:42
  • 3
    Totally relevant serverfault.com/q/597115/180142 Commented Jun 27, 2014 at 21:37
  • 1
    @Mohsen this is a kernel feature. how is the kernel supposed to know what is a legitimate Java object and what is cache? (hint: it can't, therefore it doesn't free Java caches). Commented Jun 27, 2014 at 21:46

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.