docs: def init_jvm(java_home=None,
               jvm_dll=None,
               jvm_maxmem=None,
               jvm_classpath=None,
               jvm_properties=None,
               jvm_options=None,
               config_file=None,
               config=None):
      """
      Creates a configured Java virtual machine which will be used by jpy.
  
      :param java_home: The Java JRE or JDK home directory used to search JVM shared library, if 'jvm_dll' is omitted.
      :param jvm_dll: The JVM shared library file. My be inferred from 'java_home'.
      :param jvm_maxmem: The JVM maximum heap space, e.g. '400M', '8G'. Refer to the java executable '-Xmx' option.
      :param jvm_classpath: The JVM search paths for Java class files. Separated by colons (Unix) or semicolons
                            (Windows). Refer to the java executable '-cp' option.
      :param jvm_properties: A dictionary of key -> value pairs passed to the JVM as Java system properties.
                          Refer to the java executable '-D' option.
      :param jvm_options: A list of extra options for the JVM. Refer to the java executable options.
      :param config_file: Extra configuration file (e.g. 'jpyconfig.py') to be loaded if 'config' parameter is omitted.
      :param config: An optional default configuration object providing default attributes
                     for the 'jvm_maxmem', 'jvm_classpath', 'jvm_properties', 'jvm_options' parameters.
      :return: a tuple (cdll, actual_jvm_options) on success, None otherwise.
      """
      if not config:
          config = _get_python_api_config(config_file=config_file)
  
      cdll = preload_jvm_dll(jvm_dll_file=jvm_dll,
                             java_home_dir=java_home,
                             config_file=config_file,
                             config=config,
                             fail=False)
  
      import jpy
  
      if not jpy.has_jvm():
          jvm_options = get_jvm_options(jvm_maxmem=jvm_maxmem,
                                        jvm_classpath=jvm_classpath,
                                        jvm_properties=jvm_properties,
                                        jvm_options=jvm_options,
                                        config=config)
          logger.debug('Creating JVM with options %s' % repr(jvm_options))
          jpy.create_jvm(options=jvm_options)
      else:
          jvm_options = None
  
      # print('jvm_dll =', jvm_dll)
      # print('jvm_options =', jvm_options)
      return cdll, jvm_options