public static Object myMethod () { ... Object obj = null; if () { obj = new String [size] ; } else { obj = new double [size]; } ... System.out.println("in java"); return obj; } This Java function returns String[] or Double[]. This is how I call the function from my R code. data <- .Java(myClass, "myMethod") print("out of java") When the function returns Double[] the conversion between Java and R happens quickly. I am measuring the convertion time by how long it takes between printing "in java" and "out of java". When teh returned is String[] the conversion takes too long and in some cases where size is large (150,000 for Strings of 10 chars each) the JVM runs out of memory. Can I solve this by implementing my own converter? is there an obvious reason why the default conversion for String[] is too slow and runs out of memory? These are my current converters:> getJavaConverterDescriptions()$fromJava [1] "From Java java.util.Vector to R list/vector" [2] "org.omegahat.Environment.Utils.OrderedTable from Java" [3] "From Java 1-D array to R list/vector" [4] "Converts any Java InterfaceReference" [5] "class == java.lang.reflect.Method" [6] "class == java.lang.reflect.Constructor" [7] "instanceof java.util.Properties" [8] "Integer[]" [9] "Double[]" [10] "Boolean[]" [11] "[[<primitive> to a list of built-in vectors" $toJava [1] "list object to Java" [2] "org/omegahat/R/Java/RFunctionListener"