python E:\snappy_sen1GRD\insar\interferogram\insar_gen.py
INFO: org.esa.snap.core.gpf.operators.tooladapter.ToolAdapterIO: Initializing external tool adapters
INFO: org.esa.snap.core.util.EngineVersionCheckActivator: Please check regularly for new updates for the best SNAP experience.
Traceback (most recent call last):
File “E:\snappy_sen1GRD\insar\interferogram\insar_gen.py”, line 17, in
jpy.create_jvm(snappy.jpyutil.get_jvm_options())
RuntimeError: jpy: failed to create Java VM
Please help me on this. I can’t understand what to do. Please.
Can I start JVM again by importing snappy package with in a loop. like:
for i in range(0,4):
import snappy
from snappy import jpy # can it start the JVM again? when I am faceing problem with jpy.create_jvm(snappy.jpyutil.get_jvm_options())
# operations
jpy.destroyJVM()
We can’t restart jvm, problem in my code also not solved using product.dispose() also tried system.gc(). So, now what is the option now to clean java memory when using snappy. Any fixed solution ?
There have been a number of suggestions to make better use
of memory. This might allow you to get an extra iteration of the loop, but the simple workaround is to run python separately for each pair of input files. One way to do this is to convert your existing looping script to one without looping that takes the two filenames as arguments:
Similar to snappy_bmaths.py, add import sys to the existing list of imports, then set the file names from the command-line arguments:
if len(sys.argv) != 3:
print("usage: %s <na> <na2>" % sys.argv[0])
sys.exit(1)
na = sys.argv[1]
na2 = sys.argv[2]
In a Windows terminal:
PS> python insar_ts_one_pair_of_files D:\\radar_j_coal_f\\<name of na file>.zip D:\\radar_j_coal_f\\<name of na2 file>.zip
Now you need to run the script 36 times. Using your original loop, you would have:
import subprocess
import glob
imgs=glob.glob("D:\\radar_j_coal_f\\*.zip")
for i in range(0,36):
na=list(imgs[i])
na2=list(imgs[i+1])
subprocess.run(["python", na, na2])
To test this script, replace “python” with “echo” to get a list of the arguments that will be passed the non-looping script.