[ 
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)

Reply via email to