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