My intuition above seems to contrast with 
https://godoc.org/golang.org/x/mobile/cmd/gobind:

Avoid reference cycles
> The language bindings maintain a reference to each object that has been 
> proxied. When a proxy object becomes unreachable, its finalizer reports 
> this fact to the object's native side, so that the reference can be 
> removed, potentially allowing the object to be reclaimed by its native 
> garbage collector. The mechanism is symmetric.

 

On Wednesday, August 2, 2017 at 5:30:16 PM UTC-7, Antonio Marcedone wrote:
>
> I am not sure I understand what is going on here.
> For reference, the relevant code is:
>
>             String s = "This is a test string";
>
>             MyStruct struct = new MyStruct(s.getBytes("UTF-8"));
>             //struct.setE(s.getBytes("UTF-8"));
>             tv.append("\nFirst time: "+ new String(struct.getE(), "UTF-8"));
>
>
> with corresponding go part:
>
> package test
>
> type MyStruct struct{
>     E []byte}
>
> func NewMyStruct(e []byte) *MyStruct{
>     return &MyStruct{e}}
>
>
> so s.getBytes allocates a new byte[] (in Java). Then the MyStruct 
> constructor is called, and it gets a reference to such byte[]. 
> Are you saying that since the Java garbage collector is not aware that a 
> reference to that array is stored in some variable in the go code, then it 
> just deletes it as soon as the constructor returns? 
> And then the getE method just reads whatever happens to be in memory where 
> the old array was without throwing any error despite the fact that the old 
> byte[] has been garbage collected and might have been overwritten by 
> arbitrary data?
>
> Thanks a lot for your response!
> Antonio
>
> On Wednesday, August 2, 2017 at 3:30:06 PM UTC-7, Elias Naur wrote:
>>
>> []byte arguments are passed by reference, not copied. You need to copy 
>> any byte slices you retain after the function or method call.
>>
>>  - elias
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to