[ https://issues.apache.org/jira/browse/ARROW-8861?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17616525#comment-17616525 ]
Joris Van den Bossche commented on ARROW-8861: ---------------------------------------------- Not an answer to you actual issue, but note that Plasma is deprecated (see ARROW-17860 and the email thread that is linked there) > [C++][Plasma] Memory not released until Plasma process is killed > ---------------------------------------------------------------- > > Key: ARROW-8861 > URL: https://issues.apache.org/jira/browse/ARROW-8861 > Project: Apache Arrow > Issue Type: Bug > Components: C++ - Plasma > Affects Versions: 0.16.0 > Environment: Singularity container (Ubuntu 18.04) > Reporter: Chengxin Ma > Priority: Minor > > Invoking the {{Delete(const ObjectID& object_id)}} method of a plasma client > seems not really to free up the memory used by the object. > To reproduce: > 1. use {{htop}} (or other similar tools) to monitor memory usage; > 2. start up the Plasma Object Store by {{plasma_store -m 1000000000 -s > /tmp/plasma}}; > 3. use {{put.py}} to put an object into Plasma; > 4. compile and run {{delete.cc}} ({{g++ delete.cc `pkg-config --cflags > --libs arrow plasma` --std=c++11 -o delete}}); > 5. kill the {{plasma_store}} process. > Memory usage drops at Step 5, rather than Step 4. > How to free up the memory while keeping Plasma Object Store running? > {{put.py}}: > {code:java} > from pyarrow import plasma > if __name__ == "__main__": > client = plasma.connect("/tmp/plasma") > object_id = plasma.ObjectID(20 * b"a") > object_size = 500000000 > buffer = memoryview(client.create(object_id, object_size)) > for i in range(500000000): > buffer[i] = i % 128 > client.seal(object_id) > client.disconnect() > {code} > {{delete.cc}}: > {code:java} > #include "arrow/util/logging.h" > #include <plasma/client.h> > using namespace plasma; > int main(int argc, char **argv) > { > PlasmaClient client; > ARROW_CHECK_OK(client.Connect("/tmp/plasma")); > ObjectID object_id = ObjectID::from_binary("aaaaaaaaaaaaaaaaaaaa"); > client.Delete(object_id); > ARROW_CHECK_OK(client.Disconnect()); > } > {code} > -- This message was sent by Atlassian Jira (v8.20.10#820010)