<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_default_jvm_opts(tmp_dir=None, parallel_gc=False):
 """Retrieve default JVM tuning options Avoids issues with multiple spun up Java processes running into out of memory errors. Parallel GC can use a lot of cores on big machines and primarily helps reduce task latency and responsiveness which are not needed for batch jobs. https://github.com/bcbio/bcbio-nextgen/issues/532#issuecomment-50989027 https://wiki.csiro.au/pages/viewpage.action?pageId=545034311 http://stackoverflow.com/questions/9738911/javas-serial-garbage-collector-performing-far-better-than-other-garbage-collect However, serial GC causes issues with Spark local runs so we use parallel for those cases: https://github.com/broadinstitute/gatk/issues/3605#issuecomment-332370070 """

    opts = ["-XX:+UseSerialGC"] if not parallel_gc else []
    if tmp_dir:
        opts.append("-Djava.io.tmpdir=%s" % tmp_dir)
    return opts