< prev index next >

src/jdk.jdi/share/classes/com/sun/jdi/VirtualMachine.java

Print this page
rev 58770 : [mq]: svc-spec-update

@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 1998, 2019, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1998, 2020, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.  Oracle designates this

@@ -131,22 +131,37 @@
      * mirroring a type in the target VM with the given name.
      */
     List<ReferenceType> classesByName(String className);
 
     /**
-     * Returns all loaded types. For each loaded type in the target
-     * VM a {@link ReferenceType} will be placed in the returned list.
-     * The list will include ReferenceTypes which mirror classes,
-     * interfaces, and array types.
-     * <P>
-     * The returned list will include reference types
-     * loaded at least to the point of preparation and
-     * types (like array) for which preparation is
-     * not defined.
+     * Returns all {@linkplain ReferenceType loaded types} in the target VM.
+     * <p>
+     * A class or interface creation can be triggered by one of the following:
+     * <ul>
+     * <li>by loading and deriving a class from a `class` file representation
+     *     using class loader (see JVMS {@jvms 5.3}).
+     * <li>by invoking {@link java.lang.invoke.MethodHandles.Lookup#defineHiddenClass(byte[], boolean, java.lang.invoke.MethodHandles.Lookup.ClassOption...)
+     *     Lookup::defineHiddenClass} that creates a {@link Class#isHidden
+     *     hidden class or interface} from a {@code class} file representation.
+     * <li>by invoking methods in certain reflection APIs such as
+     *     {@link Class#forName(String) Class::forName}.
+     * </ul>
+     * <p>
+     * An array class is created directly by Java virtual machine.  An array
+     * class creation can be triggered by using class loaders or by invoking
+     * methods in certain reflection APIs such as
+     * {@link java.lang.reflect.Array#newInstance(Class, int) Array::newInstance}
+     * and {@link Class#arrayType() Class::arrayType}.
+     * <p>
+     * The returned list includes all reference types, including
+     * {@link Class#isHidden hidden classes or interfaces}, loaded
+     * at least to the point of preparation and types (like array)
+     * for which preparation is not defined.
      *
      * @return a list of {@link ReferenceType} objects, each mirroring
      * a loaded type in the target VM.
+     * @jvms 5.3 Creation and Loading
      */
     List<ReferenceType> allClasses();
 
     /**
      * All classes given are redefined according to the
< prev index next >