From murdoch.duncan at gmail.com  Mon Mar 17 01:31:01 2014
From: murdoch.duncan at gmail.com (Duncan Murdoch)
Date: Sun, 16 Mar 2014 20:31:01 -0400
Subject: [Rd] Does R ever move objecsts in memory?
In-Reply-To: <20140316235116.GC14057@markov.biostat.ucsf.edu>
References: <20140316235116.GC14057@markov.biostat.ucsf.edu>
Message-ID: <53264245.7030001@gmail.com>

On 14-03-16 7:51 PM, Ross Boylan wrote:
> R objects can disappear if they are garbage collected; can they move,
> i.e., change their location in memory?
>
> I don't see any indication this might happen in "Writing R Extensions"
> or "R Internals".  But I'd like to be sure.
>
> Context: Rmpi serializes objects in raw vectors for transmission by
> mpi.  Some send operations (isend) return before transmission is
> complete and so need the bits to remain untouched until transmission
> completes.  If a preserve a reference to the raw vector in R code that
> will prevent it from being garbage collected, but if it gets moved
> that would invalidate the transfer.
>
> I was just using the blocking sends to avoid this problem, but the
> result is significant delays.
>

If the object is unchanged, it won't move.  If you modify it (e.g. 
assign a new value to one element of a vector), it may be duplicated and 
the result after the change will be at a new location.

Duncan Murdoch



[Rd] Does R ever move objecsts in memory?
Duncan Murdoch