From 83190d9a50676187d2b47c33ed8a50dfeb48c291 Mon Sep 17 00:00:00 2001 From: maxf Date: Wed, 13 Aug 2025 21:01:25 +0800 Subject: [PATCH] =?UTF-8?q?[update]=20java10-example=20=E7=A4=BA=E4=BE=8B?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- demo2/java10-example/AppCDS.md | 700 ++++++++++++++++++ demo2/java10-example/doc/img.png | Bin 0 -> 13118 bytes demo2/java10-example/doc/img_1.png | Bin 0 -> 7595 bytes demo2/java10-example/doc/img_2.png | Bin 0 -> 6278 bytes .../src/main/java/AppCDSExample.java | 27 - demo2/java10-example/src/main/java/Main.java | 13 + .../src/main/java/OtherFeaturesExample.java | 42 -- .../java/top/yexuejc/demo/java10/MyApp.java | 14 + 8 files changed, 727 insertions(+), 69 deletions(-) create mode 100644 demo2/java10-example/AppCDS.md create mode 100644 demo2/java10-example/doc/img.png create mode 100644 demo2/java10-example/doc/img_1.png create mode 100644 demo2/java10-example/doc/img_2.png delete mode 100644 demo2/java10-example/src/main/java/AppCDSExample.java delete mode 100644 demo2/java10-example/src/main/java/OtherFeaturesExample.java create mode 100644 demo2/java10-example/src/main/java/top/yexuejc/demo/java10/MyApp.java diff --git a/demo2/java10-example/AppCDS.md b/demo2/java10-example/AppCDS.md new file mode 100644 index 0000000..5f9ea1f --- /dev/null +++ b/demo2/java10-example/AppCDS.md @@ -0,0 +1,700 @@ +Java 10 新特性示例:应用类数据共享 (Application Class-Data Sharing) +--- +AppCDS 的使用需要通过 JVM 参数在命令行中进行操作,无法在单一 Java 程序内部完全展示。以下是完整的可运行示例说明: + +## 可运行示例说明 + +### 1. 创建一个简单的应用程序 + +```java +// MyApp.java +package top.yexuejc.demo.java10; +public class MyApp { + public static void main(String[] args) { + System.out.println("Hello from MyApp with AppCDS!"); + // 使用一些常用的类来演示类共享 + java.util.ArrayList list = new java.util.ArrayList<>(); + list.add("Example"); + System.out.println("List size: " + list.size()); + } +} + +``` + + +### 2. AppCDS 使用步骤 + +AppCDS 的使用分为三个步骤,需要在命令行中执行: + +1. **创建类列表文件**: + ```bash + # "C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -Xshare:off -XX:DumpLoadedClassList=app.classlist top.yexuejc.demo.java10.MyApp + java -Xshare:off -XX:DumpLoadedClassList=app.classlist top.yexuejc.demo.java10.MyApp + ``` + + 这会生成一个 `app.classlist` 文件,其中包含应用程序加载的所有类。 + ![img.png](doc/img.png) + ![img_1.png](doc/img_1.png) +2. **创建共享存档**: + ```bash + # "C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -XX:+UnlockDiagnosticVMOptions -Xshare:dump -XX:SharedClassListFile=app.classlist -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + java -Xshare:dump -XX:SharedClassListFile=app.classlist -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + ``` + 这会创建一个名为 `app.jsa` 的共享存档文件。 + ```shell + F:\coding\java-learning\demo2\java10-example\target\classes>"C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -Xshare:dump -XX:SharedClassListFile=app.classlist -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + Error: VM option 'SharedArchiveFile' is diagnostic and must be enabled via -XX:+UnlockDiagnosticVMOptions. + Error: The unlock option must precede 'SharedArchiveFile'. + Error: Could not create the Java Virtual Machine. + Error: A fatal exception has occurred. Program will exit. + + # 添加-XX:+UnlockDiagnosticVMOptions + + F:\coding\java-learning\demo2\java10-example\target\classes>"C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -XX:+UnlockDiagnosticVMOptions -Xshare:dump -XX:SharedClassListFile=app.classlist -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + narrow_klass_base = 0x0000000800000000, narrow_klass_shift = 3 + Allocated temporary class space: 1073741824 bytes at 0x00000008c0000000 + Allocated shared space: 3221225472 bytes at 0x0000000800000000 + Loading classes to share ... + Loading classes to share: done. + Rewriting and linking classes ... + Rewriting and linking classes: done + Number of classes 635 + instance classes = 572 + obj array classes = 55 + type array classes = 8 + Updating ConstMethods ... done. + Removing unshareable information ... done. + Scanning all metaspace objects ... + Allocating RW objects ... + Allocating RO objects ... + Relocating embedded pointers ... + Relocating external roots ... + Dumping symbol table ... + Relocating SystemDictionary::_well_known_klasses[] ... + Removing java_mirror ... done. + mc space: 5560 [ 0.1% of total] out of 65536 bytes [ 8.5% used] at 0x0000000800000000 + rw space: 2036632 [ 21.4% of total] out of 2097152 bytes [ 97.1% used] at 0x0000000800010000 + ro space: 3864664 [ 40.7% of total] out of 3866624 bytes [ 99.9% used] at 0x0000000800210000 + md space: 6160 [ 0.1% of total] out of 65536 bytes [ 9.4% used] at 0x00000008005c0000 + od space: 3356912 [ 35.3% of total] out of 3407872 bytes [ 98.5% used] at 0x00000008005d0000 + total : 9269928 [100.0% of total] out of 9502720 bytes [ 97.6% used] + + ``` + ![img_2.png](doc/img_2.png) + +3. **使用共享存档运行应用程序**: + ```bash + # "C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -XX:+UnlockDiagnosticVMOptions -Xshare:on -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + java -Xshare:on -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + ``` + ```shell + F:\coding\java-learning\demo2\java10-example\target\classes>"C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -XX:+UnlockDiagnosticVMOptions -Xshare:on -XX:SharedArchiveFile=app.jsa top.yexuejc.demo.java10.MyApp + Hello from MyApp with AppCDS! + List size: 1 + ``` + 这样运行的应用程序会使用共享存档,从而加快启动速度。 + +### 3. 验证 AppCDS 是否生效 + +可以通过以下方式验证 AppCDS 是否正常工作: + +```bash +# 检查是否使用了共享存档 +# "C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -XX:+UnlockDiagnosticVMOptions -Xshare:on -XX:SharedArchiveFile=app.jsa -verbose:class top.yexuejc.demo.java10.MyApp +java -Xshare:on -XX:SharedArchiveFile=app.jsa -verbose:class top.yexuejc.demo.java10.MyApp +``` +```shell +F:\coding\java-learning\demo2\java10-example\target\classes>"C:\Program Files\Java\jdk-10.0.2\bin\java.exe" -XX:+UnlockDiagnosticVMOptions -Xshare:on -XX:SharedArchiveFile=app.jsa -verbose:class top.yexuejc.demo.java10.MyApp +[0.010s][info][class,load] opened: C:\Program Files\Java\jdk-10.0.2\lib\modules +[0.032s][info][class,load] java.lang.Object source: shared objects file +[0.032s][info][class,load] java.io.Serializable source: shared objects file +[0.032s][info][class,load] java.lang.Comparable source: shared objects file +[0.033s][info][class,load] java.lang.CharSequence source: shared objects file +[0.033s][info][class,load] java.lang.String source: shared objects file +[0.033s][info][class,load] java.lang.reflect.AnnotatedElement source: shared objects file +[0.033s][info][class,load] java.lang.reflect.GenericDeclaration source: shared objects file +[0.033s][info][class,load] java.lang.reflect.Type source: shared objects file +[0.034s][info][class,load] java.lang.Class source: shared objects file +[0.034s][info][class,load] java.lang.Cloneable source: shared objects file +[0.034s][info][class,load] java.lang.ClassLoader source: shared objects file +[0.034s][info][class,load] java.lang.System source: shared objects file +[0.034s][info][class,load] java.lang.Throwable source: shared objects file +[0.034s][info][class,load] java.lang.Error source: shared objects file +[0.034s][info][class,load] java.lang.ThreadDeath source: shared objects file +[0.034s][info][class,load] java.lang.Exception source: shared objects file +[0.035s][info][class,load] java.lang.RuntimeException source: shared objects file +[0.035s][info][class,load] java.lang.SecurityManager source: shared objects file +[0.035s][info][class,load] java.security.ProtectionDomain source: shared objects file +[0.035s][info][class,load] java.security.AccessControlContext source: shared objects file +[0.035s][info][class,load] java.security.SecureClassLoader source: shared objects file +[0.035s][info][class,load] java.lang.ReflectiveOperationException source: shared objects file +[0.035s][info][class,load] java.lang.ClassNotFoundException source: shared objects file +[0.036s][info][class,load] java.lang.LinkageError source: shared objects file +[0.036s][info][class,load] java.lang.NoClassDefFoundError source: shared objects file +[0.036s][info][class,load] java.lang.ClassCastException source: shared objects file +[0.036s][info][class,load] java.lang.ArrayStoreException source: shared objects file +[0.036s][info][class,load] java.lang.VirtualMachineError source: shared objects file +[0.036s][info][class,load] java.lang.OutOfMemoryError source: shared objects file +[0.036s][info][class,load] java.lang.StackOverflowError source: shared objects file +[0.036s][info][class,load] java.lang.IllegalMonitorStateException source: shared objects file +[0.037s][info][class,load] java.lang.ref.Reference source: shared objects file +[0.037s][info][class,load] java.lang.ref.SoftReference source: shared objects file +[0.037s][info][class,load] java.lang.ref.WeakReference source: shared objects file +[0.037s][info][class,load] java.lang.ref.FinalReference source: shared objects file +[0.037s][info][class,load] java.lang.ref.PhantomReference source: shared objects file +[0.037s][info][class,load] java.lang.ref.Finalizer source: shared objects file +[0.037s][info][class,load] java.lang.ref.ReferenceQueue source: shared objects file +[0.037s][info][class,load] java.lang.Runnable source: shared objects file +[0.038s][info][class,load] java.lang.Thread source: shared objects file +[0.038s][info][class,load] java.lang.Thread$UncaughtExceptionHandler source: shared objects file +[0.038s][info][class,load] java.lang.ThreadGroup source: shared objects file +[0.038s][info][class,load] java.util.Dictionary source: shared objects file +[0.038s][info][class,load] java.util.Map source: shared objects file +[0.038s][info][class,load] java.util.Hashtable source: shared objects file +[0.038s][info][class,load] java.util.Properties source: shared objects file +[0.039s][info][class,load] java.lang.Module source: shared objects file +[0.039s][info][class,load] java.lang.reflect.AccessibleObject source: shared objects file +[0.039s][info][class,load] java.lang.reflect.Member source: shared objects file +[0.039s][info][class,load] java.lang.reflect.Field source: shared objects file +[0.039s][info][class,load] java.lang.reflect.Parameter source: shared objects file +[0.039s][info][class,load] java.lang.reflect.Executable source: shared objects file +[0.039s][info][class,load] java.lang.reflect.Method source: shared objects file +[0.040s][info][class,load] java.lang.reflect.Constructor source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.MagicAccessorImpl source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.MethodAccessor source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.MethodAccessorImpl source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.ConstructorAccessor source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.ConstructorAccessorImpl source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.DelegatingClassLoader source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.ConstantPool source: shared objects file +[0.040s][info][class,load] jdk.internal.reflect.FieldAccessor source: shared objects file +[0.041s][info][class,load] jdk.internal.reflect.FieldAccessorImpl source: shared objects file +[0.041s][info][class,load] jdk.internal.reflect.UnsafeFieldAccessorImpl source: shared objects file +[0.041s][info][class,load] jdk.internal.reflect.UnsafeStaticFieldAccessorImpl source: shared objects file +[0.041s][info][class,load] java.lang.annotation.Annotation source: shared objects file +[0.041s][info][class,load] jdk.internal.reflect.CallerSensitive source: shared objects file +[0.041s][info][class,load] java.lang.invoke.MethodHandle source: shared objects file +[0.041s][info][class,load] java.lang.invoke.DirectMethodHandle source: shared objects file +[0.041s][info][class,load] java.lang.invoke.VarHandle source: shared objects file +[0.041s][info][class,load] java.lang.invoke.MemberName source: shared objects file +[0.042s][info][class,load] java.lang.invoke.ResolvedMethodName source: shared objects file +[0.042s][info][class,load] java.lang.invoke.MethodHandleNatives source: shared objects file +[0.042s][info][class,load] java.lang.invoke.LambdaForm source: shared objects file +[0.042s][info][class,load] java.lang.invoke.MethodType source: shared objects file +[0.042s][info][class,load] java.lang.BootstrapMethodError source: shared objects file +[0.042s][info][class,load] java.lang.invoke.CallSite source: shared objects file +[0.042s][info][class,load] java.lang.invoke.MethodHandleNatives$CallSiteContext source: shared objects file +[0.042s][info][class,load] java.lang.invoke.ConstantCallSite source: shared objects file +[0.043s][info][class,load] java.lang.invoke.MutableCallSite source: shared objects file +[0.043s][info][class,load] java.lang.invoke.VolatileCallSite source: shared objects file +[0.043s][info][class,load] java.lang.Appendable source: shared objects file +[0.043s][info][class,load] java.lang.AbstractStringBuilder source: shared objects file +[0.043s][info][class,load] java.lang.StringBuffer source: shared objects file +[0.043s][info][class,load] java.lang.StringBuilder source: shared objects file +[0.044s][info][class,load] jdk.internal.misc.Unsafe source: shared objects file +[0.044s][info][class,load] jdk.internal.module.Modules source: shared objects file +[0.044s][info][class,load] java.lang.AutoCloseable source: shared objects file +[0.044s][info][class,load] java.io.Closeable source: shared objects file +[0.045s][info][class,load] java.io.InputStream source: shared objects file +[0.045s][info][class,load] java.io.ByteArrayInputStream source: shared objects file +[0.045s][info][class,load] java.io.File source: shared objects file +[0.046s][info][class,load] java.net.URL source: shared objects file +[0.046s][info][class,load] java.util.jar.Manifest source: shared objects file +[0.046s][info][class,load] jdk.internal.loader.BuiltinClassLoader source: shared objects file +[0.046s][info][class,load] jdk.internal.loader.ClassLoaders$AppClassLoader source: shared objects file +[0.046s][info][class,load] jdk.internal.loader.ClassLoaders$PlatformClassLoader source: shared objects file +[0.047s][info][class,load] java.security.CodeSource source: shared objects file +[0.047s][info][class,load] sun.net.www.ParseUtil source: shared objects file +[0.047s][info][class,load] java.lang.StackTraceElement source: shared objects file +[0.047s][info][class,load] java.nio.Buffer source: shared objects file +[0.047s][info][class,load] java.lang.StackWalker source: shared objects file +[0.047s][info][class,load] java.lang.StackStreamFactory$AbstractStackWalker source: shared objects file +[0.048s][info][class,load] java.lang.StackWalker$StackFrame source: shared objects file +[0.048s][info][class,load] java.lang.StackFrameInfo source: shared objects file +[0.048s][info][class,load] java.lang.LiveStackFrame source: shared objects file +[0.048s][info][class,load] java.lang.LiveStackFrameInfo source: shared objects file +[0.048s][info][class,load] java.lang.Boolean source: shared objects file +[0.048s][info][class,load] java.lang.Character source: shared objects file +[0.048s][info][class,load] java.lang.Number source: shared objects file +[0.048s][info][class,load] java.lang.Float source: shared objects file +[0.048s][info][class,load] java.lang.Double source: shared objects file +[0.049s][info][class,load] java.lang.Byte source: shared objects file +[0.049s][info][class,load] java.lang.Short source: shared objects file +[0.049s][info][class,load] java.lang.Integer source: shared objects file +[0.049s][info][class,load] java.lang.Long source: shared objects file +[0.049s][info][class,load] jdk.internal.loader.ClassLoaders source: shared objects file +[0.050s][info][class,load] java.lang.NullPointerException source: shared objects file +[0.050s][info][class,load] java.lang.ArithmeticException source: shared objects file +[0.051s][info][class,load] java.io.ObjectStreamField source: shared objects file +[0.052s][info][class,load] java.util.Comparator source: shared objects file +[0.052s][info][class,load] java.lang.String$CaseInsensitiveComparator source: shared objects file +[0.052s][info][class,load] java.security.Guard source: shared objects file +[0.053s][info][class,load] java.security.Permission source: shared objects file +[0.053s][info][class,load] java.security.BasicPermission source: shared objects file +[0.053s][info][class,load] java.lang.RuntimePermission source: shared objects file +[0.054s][info][class,load] java.lang.StringLatin1 source: shared objects file +[0.054s][info][class,load] java.security.AccessController source: shared objects file +[0.055s][info][class,load] java.lang.Iterable source: shared objects file +[0.055s][info][class,load] java.util.Collection source: shared objects file +[0.055s][info][class,load] java.util.Set source: shared objects file +[0.055s][info][class,load] java.util.AbstractCollection source: shared objects file +[0.055s][info][class,load] java.util.AbstractSet source: shared objects file +[0.055s][info][class,load] java.util.ImmutableCollections$AbstractImmutableSet source: shared objects file +[0.056s][info][class,load] java.util.ImmutableCollections$Set1 source: shared objects file +[0.056s][info][class,load] java.util.Objects source: shared objects file +[0.056s][info][class,load] java.lang.reflect.ReflectPermission source: shared objects file +[0.056s][info][class,load] java.security.PrivilegedAction source: shared objects file +[0.056s][info][class,load] jdk.internal.reflect.ReflectionFactory$GetReflectionFactoryAction source: shared objects file +[0.057s][info][class,load] java.security.cert.Certificate source: shared objects file +[0.057s][info][class,load] java.util.HashSet source: shared objects file +[0.057s][info][class,load] java.util.AbstractMap source: shared objects file +[0.057s][info][class,load] java.util.HashMap source: shared objects file +[0.057s][info][class,load] java.util.concurrent.ConcurrentMap source: shared objects file +[0.058s][info][class,load] java.util.concurrent.ConcurrentHashMap source: shared objects file +[0.058s][info][class,load] java.lang.Runtime source: shared objects file +[0.058s][info][class,load] java.util.concurrent.locks.Lock source: shared objects file +[0.058s][info][class,load] java.util.concurrent.locks.ReentrantLock source: shared objects file +[0.058s][info][class,load] java.util.concurrent.ConcurrentHashMap$Segment source: shared objects file +[0.059s][info][class,load] java.util.concurrent.ConcurrentHashMap$CounterCell source: shared objects file +[0.059s][info][class,load] java.util.Map$Entry source: shared objects file +[0.059s][info][class,load] java.util.concurrent.ConcurrentHashMap$Node source: shared objects file +[0.059s][info][class,load] java.util.concurrent.locks.LockSupport source: shared objects file +[0.059s][info][class,load] jdk.internal.reflect.ReflectionFactory source: shared objects file +[0.059s][info][class,load] java.lang.ref.Reference$ReferenceHandler source: shared objects file +[0.059s][info][class,load] jdk.internal.ref.Cleaner source: shared objects file +[0.059s][info][class,load] java.lang.ref.ReferenceQueue$Null source: shared objects file +[0.060s][info][class,load] java.lang.ref.ReferenceQueue$Lock source: shared objects file +[0.060s][info][class,load] jdk.internal.misc.JavaLangRefAccess source: shared objects file +[0.060s][info][class,load] java.lang.ref.Reference$1 source: shared objects file +[0.060s][info][class,load] jdk.internal.misc.SharedSecrets source: shared objects file +[0.060s][info][class,load] java.lang.ref.Finalizer$FinalizerThread source: shared objects file +[0.061s][info][class,load] jdk.internal.misc.VM source: shared objects file +[0.066s][info][class,load] java.nio.charset.Charset source: shared objects file +[0.066s][info][class,load] java.nio.charset.spi.CharsetProvider source: shared objects file +[0.066s][info][class,load] sun.nio.cs.StandardCharsets source: shared objects file +[0.066s][info][class,load] java.lang.ThreadLocal source: shared objects file +[0.067s][info][class,load] java.util.concurrent.atomic.AtomicInteger source: shared objects file +[0.067s][info][class,load] java.util.Arrays source: shared objects file +[0.067s][info][class,load] java.lang.Math source: shared objects file +[0.068s][info][class,load] sun.util.PreHashedMap source: shared objects file +[0.068s][info][class,load] sun.nio.cs.StandardCharsets$Aliases source: shared objects file +[0.068s][info][class,load] sun.nio.cs.StandardCharsets$Cache source: shared objects file +[0.068s][info][class,load] sun.nio.cs.HistoricallyNamedCharset source: shared objects file +[0.068s][info][class,load] sun.nio.cs.Unicode source: shared objects file +[0.068s][info][class,load] sun.nio.cs.UTF_8 source: shared objects file +[0.069s][info][class,load] sun.nio.cs.ISO_8859_1 source: shared objects file +[0.069s][info][class,load] sun.nio.cs.US_ASCII source: shared objects file +[0.069s][info][class,load] sun.nio.cs.StandardCharsets$Classes source: shared objects file +[0.069s][info][class,load] sun.nio.cs.MS932 source: shared objects file +[0.069s][info][class,load] java.lang.Class$ReflectionData source: shared objects file +[0.070s][info][class,load] java.lang.Class$Atomic source: shared objects file +[0.070s][info][class,load] java.lang.reflect.Modifier source: shared objects file +[0.070s][info][class,load] jdk.internal.reflect.LangReflectAccess source: shared objects file +[0.070s][info][class,load] java.lang.reflect.ReflectAccess source: shared objects file +[0.070s][info][class,load] java.lang.Class$1 source: shared objects file +[0.070s][info][class,load] jdk.internal.reflect.Reflection source: shared objects file +[0.070s][info][class,load] java.util.HashMap$Node source: shared objects file +[0.071s][info][class,load] jdk.internal.reflect.NativeConstructorAccessorImpl source: shared objects file +[0.071s][info][class,load] jdk.internal.reflect.DelegatingConstructorAccessorImpl source: shared objects file +[0.071s][info][class,load] java.lang.StringCoding source: shared objects file +[0.071s][info][class,load] java.lang.StringCoding$1 source: shared objects file +[0.071s][info][class,load] java.lang.ThreadLocal$ThreadLocalMap source: shared objects file +[0.071s][info][class,load] java.lang.ThreadLocal$ThreadLocalMap$Entry source: shared objects file +[0.072s][info][class,load] java.lang.StringCoding$StringDecoder source: shared objects file +[0.072s][info][class,load] sun.nio.cs.DoubleByte source: shared objects file +[0.072s][info][class,load] java.lang.StringUTF16 source: shared objects file +[0.073s][info][class,load] java.nio.charset.CharsetDecoder source: shared objects file +[0.073s][info][class,load] sun.nio.cs.DelegatableDecoder source: shared objects file +[0.073s][info][class,load] sun.nio.cs.ArrayDecoder source: shared objects file +[0.073s][info][class,load] sun.nio.cs.DoubleByte$Decoder source: shared objects file +[0.074s][info][class,load] java.nio.charset.CodingErrorAction source: shared objects file +[0.074s][info][class,load] java.lang.StringCoding$Result source: shared objects file +[0.074s][info][class,load] java.util.Properties$EntrySet source: shared objects file +[0.074s][info][class,load] java.util.concurrent.ConcurrentHashMap$CollectionView source: shared objects file +[0.075s][info][class,load] java.util.concurrent.ConcurrentHashMap$EntrySetView source: shared objects file +[0.075s][info][class,load] java.util.Collections source: shared objects file +[0.075s][info][class,load] java.util.Collections$EmptySet source: shared objects file +[0.075s][info][class,load] java.util.List source: shared objects file +[0.075s][info][class,load] java.util.AbstractList source: shared objects file +[0.075s][info][class,load] java.util.RandomAccess source: shared objects file +[0.075s][info][class,load] java.util.Collections$EmptyList source: shared objects file +[0.076s][info][class,load] java.util.Collections$EmptyMap source: shared objects file +[0.076s][info][class,load] java.util.Collections$SynchronizedCollection source: shared objects file +[0.076s][info][class,load] java.util.Collections$SynchronizedSet source: shared objects file +[0.076s][info][class,load] java.lang.reflect.Array source: shared objects file +[0.076s][info][class,load] java.util.concurrent.ConcurrentHashMap$Traverser source: shared objects file +[0.076s][info][class,load] java.util.concurrent.ConcurrentHashMap$BaseIterator source: shared objects file +[0.076s][info][class,load] java.util.Iterator source: shared objects file +[0.076s][info][class,load] java.util.concurrent.ConcurrentHashMap$EntryIterator source: shared objects file +[0.076s][info][class,load] java.util.concurrent.ConcurrentHashMap$MapEntry source: shared objects file +[0.077s][info][class,load] java.util.ImmutableCollections$AbstractImmutableMap source: shared objects file +[0.077s][info][class,load] java.util.ImmutableCollections$MapN source: shared objects file +[0.077s][info][class,load] java.util.ImmutableCollections source: shared objects file +[0.077s][info][class,load] java.lang.VersionProps source: shared objects file +[0.077s][info][class,load] java.io.FileInputStream source: shared objects file +[0.078s][info][class,load] java.io.FileDescriptor source: shared objects file +[0.078s][info][class,load] jdk.internal.misc.JavaIOFileDescriptorAccess source: shared objects file +[0.078s][info][class,load] java.io.FileDescriptor$1 source: shared objects file +[0.078s][info][class,load] java.io.Flushable source: shared objects file +[0.078s][info][class,load] java.io.OutputStream source: shared objects file +[0.078s][info][class,load] java.io.FileOutputStream source: shared objects file +[0.078s][info][class,load] java.io.FilterInputStream source: shared objects file +[0.078s][info][class,load] java.io.BufferedInputStream source: shared objects file +[0.079s][info][class,load] java.io.FilterOutputStream source: shared objects file +[0.079s][info][class,load] java.io.PrintStream source: shared objects file +[0.079s][info][class,load] java.io.BufferedOutputStream source: shared objects file +[0.079s][info][class,load] java.lang.IllegalArgumentException source: shared objects file +[0.079s][info][class,load] java.nio.charset.UnsupportedCharsetException source: shared objects file +[0.080s][info][class,load] java.nio.charset.IllegalCharsetNameException source: shared objects file +[0.080s][info][class,load] java.io.IOException source: shared objects file +[0.080s][info][class,load] java.io.UnsupportedEncodingException source: shared objects file +[0.080s][info][class,load] java.io.Writer source: shared objects file +[0.080s][info][class,load] java.io.OutputStreamWriter source: shared objects file +[0.081s][info][class,load] sun.nio.cs.StreamEncoder source: shared objects file +[0.081s][info][class,load] sun.security.action.GetPropertyAction source: shared objects file +[0.081s][info][class,load] java.nio.charset.CharsetEncoder source: shared objects file +[0.082s][info][class,load] sun.nio.cs.ArrayEncoder source: shared objects file +[0.082s][info][class,load] sun.nio.cs.DoubleByte$Encoder source: shared objects file +[0.084s][info][class,load] java.nio.ByteBuffer source: shared objects file +[0.084s][info][class,load] java.nio.HeapByteBuffer source: shared objects file +[0.085s][info][class,load] java.nio.Bits source: shared objects file +[0.085s][info][class,load] java.nio.ByteOrder source: shared objects file +[0.085s][info][class,load] java.util.concurrent.atomic.AtomicLong source: shared objects file +[0.086s][info][class,load] jdk.internal.misc.JavaNioAccess source: shared objects file +[0.086s][info][class,load] java.nio.Bits$1 source: shared objects file +[0.086s][info][class,load] java.lang.Readable source: shared objects file +[0.086s][info][class,load] java.nio.CharBuffer source: shared objects file +[0.087s][info][class,load] java.nio.HeapCharBuffer source: shared objects file +[0.087s][info][class,load] java.nio.charset.CoderResult source: shared objects file +[0.087s][info][class,load] java.nio.charset.CoderResult$Cache source: shared objects file +[0.087s][info][class,load] java.nio.charset.CoderResult$1 source: shared objects file +[0.088s][info][class,load] java.nio.charset.CoderResult$2 source: shared objects file +[0.088s][info][class,load] java.io.BufferedWriter source: shared objects file +[0.089s][info][class,load] java.lang.Terminator source: shared objects file +[0.089s][info][class,load] jdk.internal.misc.Signal$Handler source: shared objects file +[0.089s][info][class,load] java.lang.Terminator$1 source: shared objects file +[0.089s][info][class,load] jdk.internal.misc.Signal source: shared objects file +[0.089s][info][class,load] java.util.Hashtable$Entry source: shared objects file +[0.090s][info][class,load] jdk.internal.misc.Signal$NativeHandler source: shared objects file +[0.090s][info][class,load] java.lang.Integer$IntegerCache source: shared objects file +[0.090s][info][class,load] jdk.internal.misc.OSEnvironment source: shared objects file +[0.090s][info][class,load] sun.io.Win32ErrorMode source: shared objects file +[0.090s][info][class,load] jdk.internal.misc.JavaLangAccess source: shared objects file +[0.091s][info][class,load] java.lang.System$2 source: shared objects file +[0.093s][info][class,load] java.lang.invoke.MethodHandleStatics source: shared objects file +[0.093s][info][class,load] java.lang.CharacterData source: shared objects file +[0.094s][info][class,load] java.lang.CharacterDataLatin1 source: shared objects file +[0.094s][info][class,load] jdk.internal.module.ModuleBootstrap source: shared objects file +[0.094s][info][class,load] java.lang.module.ModuleDescriptor source: shared objects file +[0.094s][info][class,load] jdk.internal.misc.JavaLangModuleAccess source: shared objects file +[0.095s][info][class,load] java.lang.module.ModuleDescriptor$1 source: shared objects file +[0.095s][info][class,load] java.io.DefaultFileSystem source: shared objects file +[0.095s][info][class,load] java.io.FileSystem source: shared objects file +[0.095s][info][class,load] java.io.WinNTFileSystem source: shared objects file +[0.096s][info][class,load] java.io.ExpiringCache source: shared objects file +[0.096s][info][class,load] java.util.LinkedHashMap source: shared objects file +[0.096s][info][class,load] java.io.ExpiringCache$1 source: shared objects file +[0.096s][info][class,load] jdk.internal.module.ModulePatcher source: shared objects file +[0.097s][info][class,load] jdk.internal.module.SystemModuleFinders source: shared objects file +[0.097s][info][class,load] java.net.URI source: shared objects file +[0.097s][info][class,load] jdk.internal.misc.JavaNetUriAccess source: shared objects file +[0.097s][info][class,load] java.net.URI$1 source: shared objects file +[0.098s][info][class,load] jdk.internal.module.SystemModulesMap source: shared objects file +[0.098s][info][class,load] jdk.internal.module.SystemModules source: shared objects file +[0.098s][info][class,load] jdk.internal.module.SystemModules$default source: shared objects file +[0.098s][info][class,load] jdk.internal.module.Builder source: shared objects file +[0.098s][info][class,load] java.lang.module.ModuleDescriptor$Requires source: shared objects file +[0.098s][info][class,load] java.util.ImmutableCollections$Set0 source: shared objects file +[0.099s][info][class,load] java.lang.module.ModuleDescriptor$Exports source: shared objects file +[0.099s][info][class,load] java.util.ImmutableCollections$SetN source: shared objects file +[0.099s][info][class,load] java.util.ImmutableCollections$Set2 source: shared objects file +[0.099s][info][class,load] java.lang.module.ModuleDescriptor$Opens source: shared objects file +[0.100s][info][class,load] java.lang.module.ModuleDescriptor$Provides source: shared objects file +[0.100s][info][class,load] java.util.ImmutableCollections$AbstractImmutableList source: shared objects file +[0.100s][info][class,load] java.util.ImmutableCollections$List1 source: shared objects file +[0.100s][info][class,load] java.lang.module.ModuleDescriptor$Version source: shared objects file +[0.100s][info][class,load] java.util.ArrayList source: shared objects file +[0.101s][info][class,load] java.lang.Enum source: shared objects file +[0.101s][info][class,load] java.lang.module.ModuleDescriptor$Modifier source: shared objects file +[0.101s][info][class,load] java.lang.module.ModuleDescriptor$Requires$Modifier source: shared objects file +[0.101s][info][class,load] java.util.ImmutableCollections$ListN source: shared objects file +[0.102s][info][class,load] java.util.ImmutableCollections$List2 source: shared objects file +[0.103s][info][class,load] jdk.internal.module.ModuleTarget source: shared objects file +[0.103s][info][class,load] jdk.internal.module.ModuleHashes source: shared objects file +[0.103s][info][class,load] jdk.internal.module.ModuleHashes$Builder source: shared objects file +[0.104s][info][class,load] java.util.LinkedHashMap$Entry source: shared objects file +[0.104s][info][class,load] java.util.HashMap$TreeNode source: shared objects file +[0.104s][info][class,load] java.util.Collections$UnmodifiableMap source: shared objects file +[0.104s][info][class,load] jdk.internal.module.ModuleResolution source: shared objects file +[0.104s][info][class,load] java.lang.module.ModuleReference source: shared objects file +[0.104s][info][class,load] java.util.function.Supplier source: shared objects file +[0.105s][info][class,load] jdk.internal.module.SystemModuleFinders$2 source: shared objects file +[0.105s][info][class,load] jdk.internal.module.ModuleReferenceImpl source: shared objects file +[0.105s][info][class,load] java.util.KeyValueHolder source: shared objects file +[0.105s][info][class,load] jdk.internal.module.ModuleHashes$HashSupplier source: shared objects file +[0.105s][info][class,load] jdk.internal.module.SystemModuleFinders$3 source: shared objects file +[0.105s][info][class,load] java.lang.module.ModuleFinder source: shared objects file +[0.106s][info][class,load] jdk.internal.module.SystemModuleFinders$SystemModuleFinder source: shared objects file +[0.106s][info][class,load] jdk.internal.module.ModuleBootstrap$Counters source: shared objects file +[0.106s][info][class,load] java.util.Optional source: shared objects file +[0.106s][info][class,load] jdk.internal.loader.BootLoader source: shared objects file +[0.107s][info][class,load] jdk.internal.module.ServicesCatalog source: shared objects file +[0.107s][info][class,load] jdk.internal.loader.AbstractClassLoaderValue source: shared objects file +[0.107s][info][class,load] jdk.internal.loader.ClassLoaderValue source: shared objects file +[0.107s][info][class,load] jdk.internal.loader.URLClassPath source: shared objects file +[0.107s][info][class,load] java.net.URLStreamHandlerFactory source: shared objects file +[0.107s][info][class,load] java.net.URL$DefaultFactory source: shared objects file +[0.108s][info][class,load] jdk.internal.misc.JavaNetURLAccess source: shared objects file +[0.108s][info][class,load] java.net.URL$3 source: shared objects file +[0.108s][info][class,load] java.util.Vector source: shared objects file +[0.108s][info][class,load] java.util.Stack source: shared objects file +[0.108s][info][class,load] java.io.File$PathStatus source: shared objects file +[0.109s][info][class,load] java.io.ExpiringCache$Entry source: shared objects file +[0.109s][info][class,load] java.net.URLStreamHandler source: shared objects file +[0.109s][info][class,load] sun.net.www.protocol.file.Handler source: shared objects file +[0.109s][info][class,load] jdk.internal.util.Preconditions source: shared objects file +[0.109s][info][class,load] jdk.internal.loader.ClassLoaders$BootClassLoader source: shared objects file +[0.110s][info][class,load] java.lang.ClassLoader$ParallelLoaders source: shared objects file +[0.110s][info][class,load] java.util.WeakHashMap source: shared objects file +[0.110s][info][class,load] java.util.WeakHashMap$Entry source: shared objects file +[0.110s][info][class,load] java.util.Collections$SetFromMap source: shared objects file +[0.110s][info][class,load] java.util.WeakHashMap$KeySet source: shared objects file +[0.111s][info][class,load] jdk.internal.misc.JavaSecurityAccess source: shared objects file +[0.111s][info][class,load] java.security.ProtectionDomain$JavaSecurityAccessImpl source: shared objects file +[0.111s][info][class,load] jdk.internal.misc.JavaSecurityProtectionDomainAccess source: shared objects file +[0.111s][info][class,load] java.security.ProtectionDomain$2 source: shared objects file +[0.111s][info][class,load] java.security.ProtectionDomain$Key source: shared objects file +[0.112s][info][class,load] java.security.Principal source: shared objects file +[0.112s][info][class,load] jdk.internal.loader.BuiltinClassLoader$LoadedModule source: shared objects file +[0.112s][info][class,load] sun.net.www.protocol.jrt.Handler source: shared objects file +[0.113s][info][class,load] java.util.ImmutableCollections$SetN$1 source: shared objects file +[0.113s][info][class,load] java.lang.module.Configuration source: shared objects file +[0.114s][info][class,load] java.lang.module.ResolvedModule source: shared objects file +[0.114s][info][class,load] java.util.AbstractMap$1 source: shared objects file +[0.114s][info][class,load] java.util.AbstractMap$1$1 source: shared objects file +[0.114s][info][class,load] java.util.ImmutableCollections$MapN$1 source: shared objects file +[0.114s][info][class,load] java.util.ImmutableCollections$MapN$1$1 source: shared objects file +[0.115s][info][class,load] java.util.Collections$1 source: shared objects file +[0.115s][info][class,load] java.util.ImmutableCollections$Set2$1 source: shared objects file +[0.115s][info][class,load] java.util.Collections$EmptyIterator source: shared objects file +[0.115s][info][class,load] jdk.internal.module.ModuleLoaderMap source: shared objects file +[0.116s][info][class,load] java.util.function.Function source: shared objects file +[0.116s][info][class,load] jdk.internal.module.ModuleLoaderMap$Mapper source: shared objects file +[0.117s][info][class,load] java.util.concurrent.ConcurrentHashMap$ForwardingNode source: shared objects file +[0.117s][info][class,load] java.lang.ModuleLayer source: shared objects file +[0.118s][info][class,load] java.util.ImmutableCollections$List0 source: shared objects file +[0.118s][info][class,load] java.util.AbstractList$Itr source: shared objects file +[0.118s][info][class,load] java.util.ArrayList$Itr source: shared objects file +[0.119s][info][class,load] java.util.Collections$UnmodifiableCollection source: shared objects file +[0.119s][info][class,load] java.util.Collections$UnmodifiableSet source: shared objects file +[0.120s][info][class,load] java.util.Collections$UnmodifiableCollection$1 source: shared objects file +[0.121s][info][class,load] jdk.internal.module.ServicesCatalog$ServiceProvider source: shared objects file +[0.121s][info][class,load] java.util.concurrent.CopyOnWriteArrayList source: shared objects file +[0.122s][info][class,load] java.util.HashMap$KeySet source: shared objects file +[0.122s][info][class,load] java.util.HashMap$HashIterator source: shared objects file +[0.122s][info][class,load] java.util.HashMap$KeyIterator source: shared objects file +[0.122s][info][class,load] java.lang.ModuleLayer$Controller source: shared objects file +[0.122s][info][class,load] jdk.internal.module.IllegalAccessLogger$Mode source: shared objects file +[0.123s][info][class,load] jdk.internal.module.IllegalAccessLogger$Builder source: shared objects file +[0.123s][info][class,load] java.util.HashMap$Values source: shared objects file +[0.123s][info][class,load] java.util.HashMap$ValueIterator source: shared objects file +[0.123s][info][class,load] jdk.internal.module.ModuleBootstrap$2 source: shared objects file +[0.124s][info][class,load] java.util.HashMap$EntrySet source: shared objects file +[0.124s][info][class,load] java.util.HashMap$EntryIterator source: shared objects file +[0.125s][info][class,load] jdk.internal.module.IllegalAccessLogger source: shared objects file +[0.126s][info][class,load] sun.launcher.LauncherHelper source: shared objects file +[0.126s][info][class,load] sun.net.util.URLUtil source: shared objects file +[0.126s][info][class,load] java.util.Locale source: shared objects file +[0.127s][info][class,load] sun.util.locale.LocaleObjectCache source: shared objects file +[0.127s][info][class,load] java.util.Locale$Cache source: shared objects file +[0.127s][info][class,load] sun.util.locale.BaseLocale source: shared objects file +[0.128s][info][class,load] sun.util.locale.BaseLocale$Cache source: shared objects file +[0.129s][info][class,load] sun.util.locale.BaseLocale$Key source: shared objects file +[0.129s][info][class,load] sun.util.locale.LocaleObjectCache$CacheEntry source: shared objects file +[0.129s][info][class,load] java.util.Locale$LocaleKey source: shared objects file +[0.129s][info][class,load] sun.util.locale.LocaleUtils source: shared objects file +[0.130s][info][class,load] sun.util.locale.InternalLocaleBuilder source: shared objects file +[0.130s][info][class,load] sun.util.locale.InternalLocaleBuilder$CaseInsensitiveChar source: shared objects file +[0.130s][info][class,load] java.security.PrivilegedExceptionAction source: shared objects file +[0.130s][info][class,load] jdk.internal.loader.URLClassPath$3 source: shared objects file +[0.130s][info][class,load] jdk.internal.loader.URLClassPath$Loader source: shared objects file +[0.131s][info][class,load] jdk.internal.loader.URLClassPath$FileLoader source: shared objects file +[0.131s][info][class,load] jdk.internal.loader.Resource source: shared objects file +[0.132s][info][class,load] jdk.internal.loader.URLClassPath$FileLoader$1 source: shared objects file +[0.132s][info][class,load] java.lang.NamedPackage source: shared objects file +[0.132s][info][class,load] java.lang.Package source: shared objects file +[0.132s][info][class,load] java.lang.Package$VersionInfo source: shared objects file +[0.132s][info][class,load] java.io.FileInputStream$AltFinalizer source: shared objects file +[0.132s][info][class,load] java.lang.ref.Cleaner$Cleanable source: shared objects file +[0.133s][info][class,load] jdk.internal.ref.PhantomCleanable source: shared objects file +[0.133s][info][class,load] java.io.FileDescriptor$FDCleanup source: shared objects file +[0.133s][info][class,load] jdk.internal.ref.CleanerFactory source: shared objects file +[0.133s][info][class,load] java.util.concurrent.ThreadFactory source: shared objects file +[0.133s][info][class,load] jdk.internal.ref.CleanerFactory$1 source: shared objects file +[0.133s][info][class,load] java.lang.ref.Cleaner source: shared objects file +[0.133s][info][class,load] java.lang.ref.Cleaner$1 source: shared objects file +[0.133s][info][class,load] jdk.internal.ref.CleanerImpl source: shared objects file +[0.133s][info][class,load] jdk.internal.ref.CleanerImpl$PhantomCleanableRef source: shared objects file +[0.134s][info][class,load] jdk.internal.ref.WeakCleanable source: shared objects file +[0.134s][info][class,load] jdk.internal.ref.CleanerImpl$WeakCleanableRef source: shared objects file +[0.134s][info][class,load] jdk.internal.ref.SoftCleanable source: shared objects file +[0.134s][info][class,load] jdk.internal.ref.CleanerImpl$SoftCleanableRef source: shared objects file +[0.134s][info][class,load] jdk.internal.ref.CleanerImpl$CleanerCleanable source: shared objects file +[0.134s][info][class,load] jdk.internal.ref.CleanerFactory$1$1 source: shared objects file +[0.134s][info][class,load] jdk.internal.misc.InnocuousThread source: shared objects file +[0.135s][info][class,load] jdk.internal.misc.InnocuousThread$3 source: shared objects file +[0.135s][info][class,load] jdk.internal.misc.InnocuousThread$2 source: shared objects file +[0.135s][info][class,load] sun.nio.ByteBuffered source: shared objects file +[0.135s][info][class,load] java.io.FileInputStream$1 source: shared objects file +[0.136s][info][class,load] java.security.SecureClassLoader$CodeSourceKey source: shared objects file +[0.136s][info][class,load] java.security.SecureClassLoader$1 source: shared objects file +[0.136s][info][class,load] java.util.concurrent.ConcurrentHashMap$ReservationNode source: shared objects file +[0.136s][info][class,load] java.security.PermissionCollection source: shared objects file +[0.136s][info][class,load] java.security.Permissions source: shared objects file +[0.136s][info][class,load] java.net.URLConnection source: shared objects file +[0.137s][info][class,load] sun.net.www.URLConnection source: shared objects file +[0.137s][info][class,load] sun.net.www.protocol.file.FileURLConnection source: shared objects file +[0.137s][info][class,load] sun.net.www.MessageHeader source: shared objects file +[0.137s][info][class,load] java.io.FilePermission source: shared objects file +[0.137s][info][class,load] sun.nio.fs.DefaultFileSystemProvider source: shared objects file +[0.138s][info][class,load] java.nio.file.spi.FileSystemProvider source: shared objects file +[0.138s][info][class,load] sun.nio.fs.AbstractFileSystemProvider source: shared objects file +[0.138s][info][class,load] sun.nio.fs.WindowsFileSystemProvider source: shared objects file +[0.138s][info][class,load] java.nio.file.FileSystem source: shared objects file +[0.138s][info][class,load] sun.nio.fs.WindowsFileSystem source: shared objects file +[0.138s][info][class,load] java.util.Arrays$ArrayList source: shared objects file +[0.138s][info][class,load] java.util.Arrays$ArrayItr source: shared objects file +[0.138s][info][class,load] sun.nio.fs.WindowsPathParser source: shared objects file +[0.139s][info][class,load] sun.nio.fs.WindowsPathType source: shared objects file +[0.139s][info][class,load] sun.nio.fs.WindowsPathParser$Result source: shared objects file +[0.139s][info][class,load] java.net.URI$Parser source: shared objects file +[0.139s][info][class,load] java.nio.file.Watchable source: shared objects file +[0.139s][info][class,load] java.nio.file.Path source: shared objects file +[0.139s][info][class,load] sun.nio.fs.WindowsPath source: shared objects file +[0.140s][info][class,load] jdk.internal.misc.JavaIOFilePermissionAccess source: shared objects file +[0.140s][info][class,load] java.io.FilePermission$1 source: shared objects file +[0.140s][info][class,load] sun.security.util.FilePermCompat source: shared objects file +[0.140s][info][class,load] java.security.Permissions$1 source: shared objects file +[0.140s][info][class,load] java.io.FilePermissionCollection source: shared objects file +[0.141s][info][class,load] java.util.function.BiFunction source: shared objects file +[0.141s][info][class,load] java.io.FilePermissionCollection$1 source: shared objects file +[0.141s][info][class,load] java.security.AllPermission source: shared objects file +[0.141s][info][class,load] java.security.UnresolvedPermission source: shared objects file +[0.141s][info][class,load] java.security.BasicPermissionCollection source: shared objects file +[0.141s][info][class,load] java.security.SecureClassLoader$DebugHolder source: shared objects file +[0.141s][info][class,load] sun.security.util.Debug source: shared objects file +[0.142s][info][class,load] top.yexuejc.demo.java10.MyApp source: file:/F:/coding/java-learning/demo2/java10-example/target/classes/ +[0.142s][info][class,load] java.lang.PublicMethods$MethodList source: shared objects file +[0.143s][info][class,load] java.lang.PublicMethods$Key source: shared objects file +[0.143s][info][class,load] java.lang.Void source: shared objects file +Hello from MyApp with AppCDS! +[0.143s][info][class,load] java.lang.invoke.StringConcatFactory source: shared objects file +[0.143s][info][class,load] java.lang.invoke.MethodHandles$Lookup source: shared objects file +[0.144s][info][class,load] java.lang.invoke.MethodType$ConcurrentWeakInternSet source: shared objects file +[0.144s][info][class,load] java.lang.invoke.MethodType$ConcurrentWeakInternSet$WeakEntry source: shared objects file +[0.144s][info][class,load] java.lang.invoke.MethodTypeForm source: shared objects file +[0.144s][info][class,load] java.lang.invoke.MethodHandles source: shared objects file +[0.145s][info][class,load] java.lang.invoke.MemberName$Factory source: shared objects file +[0.145s][info][class,load] sun.invoke.util.VerifyAccess source: shared objects file +[0.145s][info][class,load] sun.invoke.util.Wrapper source: shared objects file +[0.145s][info][class,load] sun.invoke.util.Wrapper$Format source: shared objects file +[0.146s][info][class,load] java.lang.invoke.LambdaForm$NamedFunction source: shared objects file +[0.146s][info][class,load] java.lang.invoke.DirectMethodHandle$Holder source: shared objects file +[0.146s][info][class,load] sun.invoke.util.ValueConversions source: shared objects file +[0.146s][info][class,load] java.lang.invoke.MethodHandleImpl source: shared objects file +[0.146s][info][class,load] java.lang.invoke.Invokers source: shared objects file +[0.147s][info][class,load] java.lang.invoke.StringConcatFactory$Strategy source: shared objects file +[0.147s][info][class,load] java.lang.invoke.LambdaForm$Kind source: shared objects file +[0.147s][info][class,load] java.lang.NoSuchMethodException source: shared objects file +[0.147s][info][class,load] java.lang.invoke.LambdaForm$BasicType source: shared objects file +[0.148s][info][class,load] java.lang.invoke.LambdaForm$Name source: shared objects file +[0.148s][info][class,load] java.lang.invoke.LambdaForm$Holder source: shared objects file +[0.148s][info][class,load] java.lang.invoke.MethodHandleImpl$Intrinsic source: shared objects file +[0.148s][info][class,load] java.lang.invoke.InvokerBytecodeGenerator source: shared objects file +[0.149s][info][class,load] java.lang.invoke.InvokerBytecodeGenerator$2 source: shared objects file +[0.149s][info][class,load] jdk.internal.misc.JavaLangInvokeAccess source: shared objects file +[0.149s][info][class,load] java.lang.invoke.MethodHandleImpl$1 source: shared objects file +[0.149s][info][class,load] java.lang.invoke.DelegatingMethodHandle source: shared objects file +[0.149s][info][class,load] java.lang.invoke.MethodHandleImpl$AsVarargsCollector source: shared objects file +[0.150s][info][class,load] java.lang.invoke.DelegatingMethodHandle$Holder source: shared objects file +[0.150s][info][class,load] java.lang.invoke.BoundMethodHandle source: shared objects file +[0.150s][info][class,load] java.lang.invoke.SimpleMethodHandle source: shared objects file +[0.150s][info][class,load] java.lang.invoke.Invokers$Holder source: shared objects file +[0.150s][info][class,load] java.lang.invoke.ClassSpecializer source: shared objects file +[0.151s][info][class,load] java.lang.invoke.BoundMethodHandle$Specializer source: shared objects file +[0.151s][info][class,load] java.lang.invoke.ClassSpecializer$SpeciesData source: shared objects file +[0.151s][info][class,load] java.lang.invoke.BoundMethodHandle$SpeciesData source: shared objects file +[0.151s][info][class,load] java.lang.invoke.ClassSpecializer$Factory source: shared objects file +[0.151s][info][class,load] java.lang.invoke.BoundMethodHandle$Specializer$Factory source: shared objects file +[0.151s][info][class,load] java.lang.invoke.ClassSpecializer$1 source: shared objects file +[0.152s][info][class,load] java.lang.NoSuchFieldException source: shared objects file +[0.152s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_L source: shared objects file +[0.152s][info][class,load] sun.invoke.util.VerifyType source: shared objects file +[0.153s][info][class,load] sun.invoke.empty.Empty source: shared objects file +[0.153s][info][class,load] java.lang.invoke.DirectMethodHandle$1 source: shared objects file +[0.153s][info][class,load] java.lang.invoke.DirectMethodHandle$Accessor source: shared objects file +[0.153s][info][class,load] java.lang.invoke.MethodHandleImpl$IntrinsicMethodHandle source: shared objects file +[0.154s][info][class,load] java.lang.invoke.LambdaFormEditor source: shared objects file +[0.154s][info][class,load] java.lang.invoke.LambdaFormEditor$Transform source: shared objects file +[0.154s][info][class,load] java.lang.invoke.LambdaFormBuffer source: shared objects file +[0.154s][info][class,load] jdk.internal.org.objectweb.asm.ClassVisitor source: shared objects file +[0.154s][info][class,load] jdk.internal.org.objectweb.asm.ClassWriter source: shared objects file +[0.155s][info][class,load] jdk.internal.org.objectweb.asm.ByteVector source: shared objects file +[0.155s][info][class,load] jdk.internal.org.objectweb.asm.Item source: shared objects file +[0.155s][info][class,load] sun.invoke.util.BytecodeDescriptor source: shared objects file +[0.155s][info][class,load] jdk.internal.org.objectweb.asm.MethodVisitor source: shared objects file +[0.155s][info][class,load] jdk.internal.org.objectweb.asm.MethodWriter source: shared objects file +[0.155s][info][class,load] jdk.internal.org.objectweb.asm.Type source: shared objects file +[0.155s][info][class,load] jdk.internal.org.objectweb.asm.Label source: shared objects file +[0.156s][info][class,load] jdk.internal.org.objectweb.asm.Frame source: shared objects file +[0.156s][info][class,load] jdk.internal.org.objectweb.asm.AnnotationVisitor source: shared objects file +[0.156s][info][class,load] jdk.internal.org.objectweb.asm.AnnotationWriter source: shared objects file +[0.157s][info][class,load] java.lang.invoke.InvokerBytecodeGenerator$CpPatch source: shared objects file +[0.157s][info][class,load] sun.reflect.misc.ReflectUtil source: shared objects file +[0.157s][info][class,load] java.lang.invoke.LambdaForm$MH/1421795058 source: java.lang.invoke.LambdaForm +[0.158s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LL source: shared objects file +[0.159s][info][class,load] java.lang.invoke.LambdaForm$MH/41359092 source: java.lang.invoke.LambdaForm +[0.160s][info][class,load] java.lang.invoke.LambdaForm$MH/149928006 source: java.lang.invoke.LambdaForm +[0.160s][info][class,load] java.lang.invoke.StringConcatFactory$1 source: shared objects file +[0.160s][info][class,load] java.lang.invoke.StringConcatFactory$Mode source: shared objects file +[0.160s][info][class,load] java.lang.invoke.StringConcatFactory$Recipe source: shared objects file +[0.161s][info][class,load] java.lang.invoke.StringConcatFactory$RecipeElement source: shared objects file +[0.161s][info][class,load] java.lang.invoke.StringConcatFactory$MethodHandleInlineCopyStrategy source: shared objects file +[0.161s][info][class,load] java.lang.invoke.StringConcatFactory$MethodHandleInlineCopyStrategy$1 source: shared objects file +[0.161s][info][class,load] java.lang.invoke.StringConcatFactory$MethodHandleInlineCopyStrategy$2 source: shared objects file +[0.162s][info][class,load] java.lang.invoke.StringConcatFactory$MethodHandleInlineCopyStrategy$3 source: shared objects file +[0.162s][info][class,load] java.lang.StringConcatHelper source: shared objects file +[0.162s][info][class,load] java.lang.invoke.StringConcatFactory$Stringifiers source: shared objects file +[0.163s][info][class,load] java.lang.ClassValue source: shared objects file +[0.163s][info][class,load] java.lang.invoke.StringConcatFactory$Stringifiers$StringifierMost source: shared objects file +[0.163s][info][class,load] java.lang.ClassValue$Entry source: shared objects file +[0.163s][info][class,load] java.lang.ClassValue$Identity source: shared objects file +[0.164s][info][class,load] java.lang.ClassValue$Version source: shared objects file +[0.164s][info][class,load] java.lang.invoke.StringConcatFactory$Stringifiers$StringifierAny source: shared objects file +[0.164s][info][class,load] java.lang.ClassValue$ClassValueMap source: shared objects file +[0.165s][info][class,load] java.lang.invoke.LambdaForm$MH/1160460865 source: java.lang.invoke.LambdaForm +[0.165s][info][class,load] java.lang.invoke.LambdaForm$MH/1247233941 source: java.lang.invoke.LambdaForm +[0.166s][info][class,load] java.lang.invoke.LambdaForm$MH/258952499 source: java.lang.invoke.LambdaForm +[0.167s][info][class,load] java.lang.invoke.LambdaForm$MH/603742814 source: java.lang.invoke.LambdaForm +[0.168s][info][class,load] java.lang.invoke.LambdaForm$MH/1067040082 source: java.lang.invoke.LambdaForm +[0.168s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LLL source: shared objects file +[0.169s][info][class,load] java.lang.invoke.LambdaForm$MH/980546781 source: java.lang.invoke.LambdaForm +[0.170s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LLLL source: shared objects file +[0.170s][info][class,load] java.lang.invoke.LambdaForm$MH/140435067 source: java.lang.invoke.LambdaForm +[0.172s][info][class,load] java.lang.invoke.LambdaForm$MH/1450495309 source: java.lang.invoke.LambdaForm +[0.172s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LLLLL source: shared objects file +[0.173s][info][class,load] java.lang.invoke.LambdaForm$MH/1706377736 source: java.lang.invoke.LambdaForm +[0.173s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LLLLLL source: shared objects file +[0.175s][info][class,load] java.lang.invoke.LambdaForm$MH/1804094807 source: java.lang.invoke.LambdaForm +[0.175s][info][class,load] java.lang.Byte$ByteCache source: shared objects file +[0.176s][info][class,load] java.lang.invoke.MethodHandles$1 source: shared objects file +[0.176s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LLLLLLI source: shared objects file +[0.177s][info][class,load] java.lang.invoke.LambdaForm$MH/2001049719 source: java.lang.invoke.LambdaForm +[0.178s][info][class,load] sun.invoke.util.ValueConversions$WrapperCache source: shared objects file +[0.178s][info][class,load] java.lang.invoke.BoundMethodHandle$Species_LLLLLLII source: shared objects file +[0.179s][info][class,load] java.lang.invoke.LambdaForm$MH/1927950199 source: java.lang.invoke.LambdaForm +[0.180s][info][class,load] java.lang.invoke.LambdaForm$MH/868693306 source: java.lang.invoke.LambdaForm +List size: 1 +[0.180s][info][class,load] java.lang.Shutdown source: shared objects file +[0.181s][info][class,load] java.lang.Shutdown$Lock source: shared objects file +``` diff --git a/demo2/java10-example/doc/img.png b/demo2/java10-example/doc/img.png new file mode 100644 index 0000000000000000000000000000000000000000..116819ba1d8b84b24fc8eca54ab078895a39c224 GIT binary patch literal 13118 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 literal 0 HcmV?d00001 diff --git a/demo2/java10-example/doc/img_1.png b/demo2/java10-example/doc/img_1.png new file mode 100644 index 0000000000000000000000000000000000000000..582eab359ec74ef0b378315115611b68856747f5 GIT binary patch literal 7595 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 literal 0 HcmV?d00001 diff --git a/demo2/java10-example/src/main/java/AppCDSExample.java b/demo2/java10-example/src/main/java/AppCDSExample.java deleted file mode 100644 index d0381b4..0000000 --- a/demo2/java10-example/src/main/java/AppCDSExample.java +++ /dev/null @@ -1,27 +0,0 @@ -import java.util.*; - -/** - * Java 10 新特性示例:应用类数据共享 (Application Class-Data Sharing) - * - * AppCDS允许将应用程序类加载到共享存档中,以便在多个JVM进程间共享, - * 从而减少启动时间和内存占用。 - * - * 使用方法: - * 1. 创建类列表: java -Xshare:off -XX:DumpLoadedClassList=app.classlist com.example.MyApp - * 2. 创建共享存档: java -Xshare:dump -XX:SharedClassListFile=app.classlist -XX:SharedArchiveFile=app.jsa - * 3. 使用共享存档: java -Xshare:on -XX:SharedArchiveFile=app.jsa com.example.MyApp - */ -public class AppCDSExample { - public static void runExample() { - System.out.println("=== Java 10 应用类数据共享示例 ==="); - System.out.println("应用类数据共享(AppCDS)是Java 10的重要性能特性"); - System.out.println("它可以显著提高JVM启动速度并减少内存占用"); - System.out.println("特别适用于需要快速启动和运行多个JVM实例的场景"); - System.out.println(""); - System.out.println("使用步骤:"); - System.out.println("1. 创建类列表: java -Xshare:off -XX:DumpLoadedClassList=app.classlist MyApp"); - System.out.println("2. 创建共享存档: java -Xshare:dump -XX:SharedClassListFile=app.classlist -XX:SharedArchiveFile=app.jsa"); - System.out.println("3. 使用共享存档: java -Xshare:on -XX:SharedArchiveFile=app.jsa MyApp"); - System.out.println("\n=== 应用类数据共享示例结束 ===\n"); - } -} \ No newline at end of file diff --git a/demo2/java10-example/src/main/java/Main.java b/demo2/java10-example/src/main/java/Main.java index a465d82..259ea61 100644 --- a/demo2/java10-example/src/main/java/Main.java +++ b/demo2/java10-example/src/main/java/Main.java @@ -1,3 +1,6 @@ +import java.util.NoSuchElementException; +import java.util.Optional; + /** * Java 10 新特性主程序入口 * 演示Java 10的主要新特性 @@ -11,5 +14,15 @@ public class Main { // 运行局部变量类型推断示例 VarExample.runExample(); + + // Optional.orElseThrow() 简化调用 + Optional optional = Optional.empty(); + try { + // Java 10之前: optional.orElseThrow(NoSuchElementException::new) + // Java 10之后: optional.orElseThrow() - 无需显式指定异常构造器 + String result = optional.orElseThrow(); // 简化版本 + } catch (NoSuchElementException e) { + System.out.println("Optional为空,抛出异常: " + e.getMessage()); + } } } \ No newline at end of file diff --git a/demo2/java10-example/src/main/java/OtherFeaturesExample.java b/demo2/java10-example/src/main/java/OtherFeaturesExample.java deleted file mode 100644 index 19d8922..0000000 --- a/demo2/java10-example/src/main/java/OtherFeaturesExample.java +++ /dev/null @@ -1,42 +0,0 @@ -import java.util.*; -import java.util.stream.*; -import java.util.concurrent.*; - -/** - * Java 10 其他新特性示例 - * - * 包括API增强和其他重要改进 - */ -public class OtherFeaturesExample { - public static void runExample() { - System.out.println("=== Java 10 其他新特性示例 ==="); - - // Optional.orElseThrow() 简化调用 - Optional optional = Optional.empty(); - try { - // Java 10之前: optional.orElseThrow(NoSuchElementException::new) - // Java 10之后: optional.orElseThrow() - 无需显式指定异常构造器 - String result = optional.orElseThrow(); // 简化版本 - } catch (NoSuchElementException e) { - System.out.println("Optional为空,抛出异常: " + e.getMessage()); - } - - // Collection.toArray() 新重载方法 - List stringList = Arrays.asList("Java", "10", "新特性"); - // Java 10新增的重载方法,可以直接指定数组类型 -// String[] stringArray = stringList.toArray(stringList.toArray(new String[0])); - String[] stringArray = stringList.toArray(String[]::new); - System.out.println("Collection.toArray() 新方法结果: " + Arrays.toString(stringArray)); - - // Stream API 增强 - Collectors.teeing() - // 注意:teeing是在Java 12中引入的,这里演示其他collector的使用 - List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); - - // 使用新的API改进 - var average = numbers.stream() - .collect(Collectors.averagingInt(Integer::intValue)); - System.out.println("数字平均值: " + average); - - System.out.println("\n=== 其他新特性示例结束 ===\n"); - } -} \ No newline at end of file diff --git a/demo2/java10-example/src/main/java/top/yexuejc/demo/java10/MyApp.java b/demo2/java10-example/src/main/java/top/yexuejc/demo/java10/MyApp.java new file mode 100644 index 0000000..19fbdc1 --- /dev/null +++ b/demo2/java10-example/src/main/java/top/yexuejc/demo/java10/MyApp.java @@ -0,0 +1,14 @@ +package top.yexuejc.demo.java10; +/** + * @author maxiaofeng + * @date 2025/8/13 20:40 + */ +public class MyApp { + public static void main(String[] args) { + System.out.println("Hello from MyApp with AppCDS!"); + // 使用一些常用的类来演示类共享 + java.util.ArrayList list = new java.util.ArrayList<>(); + list.add("Example"); + System.out.println("List size: " + list.size()); + } +}