java类的加载时间太长

时间:2019-02-27 03:26:01

标签: java jvisualvm

我的spring-boot应用程序在20分钟后无法启动。

注意 Class Loader时间enter image description here 我在不同的时间转储了主线程的线程堆栈:

  java.lang.Thread.State: RUNNABLE
      at java.util.zip.ZipFile.ensureOpen(ZipFile.java:692)
      at java.util.zip.ZipFile.getEntry(ZipFile.java:315)
      - locked <0x2088> (a java.util.jar.JarFile)
      at java.util.jar.JarFile.getEntry(JarFile.java:240)
      at java.util.jar.JarFile.getJarEntry(JarFile.java:223)
      at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:1042)
      at sun.misc.URLClassPath.getResource(URLClassPath.java:239)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:365)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
      at java.security.AccessController.doPrivileged(AccessController.java:-1)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
"main@3543" prio=5 tid=0x6f nid=NA runnable
  java.lang.Thread.State: RUNNABLE
      at java.io.DataOutputStream.write(DataOutputStream.java:88)
      - locked <0x20d0> (a java.io.DataOutputStream)
      at java.io.DataOutputStream.writeShort(DataOutputStream.java:167)
      at sun.misc.ProxyGenerator$ConstantPool$IndirectEntry.write(ProxyGenerator.java:2010)
      at sun.misc.ProxyGenerator$ConstantPool.write(ProxyGenerator.java:1846)
      at sun.misc.ProxyGenerator.generateClassFile(ProxyGenerator.java:532)
      at sun.misc.ProxyGenerator.generateProxyClass(ProxyGenerator.java:339)
      at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:639)
      at java.lang.reflect.Proxy$ProxyClassFactory.apply(Proxy.java:557)
      at java.lang.reflect.WeakCache$Factory.get(WeakCache.java:230)
      - locked <0x20d1> (a java.lang.reflect.WeakCache$Factory)
      at java.lang.reflect.WeakCache.get(WeakCache.java:127)
      at java.lang.reflect.Proxy.getProxyClass0(Proxy.java:419)
      at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:719)
      at sun.reflect.annotation.AnnotationParser$1.run(AnnotationParser.java:305)
      at sun.reflect.annotation.AnnotationParser$1.run(AnnotationParser.java:303)
      at java.security.AccessController.doPrivileged(AccessController.java:-1)
      at sun.reflect.annotation.AnnotationParser.annotationForMap(AnnotationParser.java:303)
      at sun.reflect.annotation.AnnotationParser.parseAnnotation2(AnnotationParser.java:293)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:120)
      at sun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:72)
      at java.lang.reflect.Field.declaredAnnotations(Field.java:1150)
      - locked <0x20d2> (a java.lang.reflect.Field)
      at java.lang.reflect.Field.declaredAnnotations(Field.java:1148)
      - locked <0x20d3> (a java.lang.reflect.Field)
      at java.lang.reflect.Field.getAnnotation(Field.java:1120)
      at java.lang.reflect.AnnotatedElement.isAnnotationPresent(AnnotatedElement.java:258)
      at java.lang.reflect.AccessibleObject.isAnnotationPresent(AccessibleObject.java:191)
      at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor$1.doWith(CommonAnnotationBeanPostProcessor.java:364)
      at org.springframework.util.ReflectionUtils.doWithLocalFields(ReflectionUtils.java:657)
      at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.buildResourceMetadata(CommonAnnotationBeanPostProcessor.java:361)
      at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.findResourceMetadata(CommonAnnotationBeanPostProcessor.java:340)
      - locked <0x20d4> (a java.util.concurrent.ConcurrentHashMap)
      at org.springframework.context.annotation.CommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinition(CommonAnnotationBeanPostProcessor.java:297)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyMergedBeanDefinitionPostProcessors(AbstractAutowireCapableBeanFactory.java:1000)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:523)
      - locked <0x20d5> (a java.lang.Object)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
      - locked <0x2062> (a java.util.concurrent.ConcurrentHashMap)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
      at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:519)
      at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.getCustomizers(EmbeddedServletContainerCustomizerBeanPostProcessor.java:82)
      at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization(EmbeddedServletContainerCustomizerBeanPostProcessor.java:72)
      at org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizerBeanPostProcessor.postProcessBeforeInitialization(EmbeddedServletContainerCustomizerBeanPostProcessor.java:59)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1626)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
      at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
      at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:312)
      at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
      at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:308)
      at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.getEmbeddedServletContainerFactory(EmbeddedWebApplicationContext.java:199)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.createEmbeddedServletContainer(EmbeddedWebApplicationContext.java:162)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.onRefresh(EmbeddedWebApplicationContext.java:134)
      at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
      - locked <0x1d6c> (a java.lang.Object)
      at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122)
      at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693)
      at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360)
      at org.springframework.boot.SpringApplication.run(SpringApplication.java:303)
      at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:134)
      - locked <0x1d6d> (a java.util.concurrent.atomic.AtomicBoolean)
"main@3543" prio=5 tid=0x6f nid=NA runnable
  java.lang.Thread.State: RUNNABLE
      at sun.misc.MetaIndex.mayContain(MetaIndex.java:246)
      at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:1032)
      at sun.misc.URLClassPath.getResource(URLClassPath.java:239)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:365)
      at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
      at java.security.AccessController.doPrivileged(AccessController.java:-1)
      at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
      - locked <0x2116> (a java.lang.Object)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
      - locked <0x2117> (a java.lang.Object)
      at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

加载类花费太多时间。看来我的应用程序永远无法启动。

如何解决此问题?

spring-boot版本:1.5.13.RELEASE macOS High Sierra 10.13.3 16G / Core i7 jdk:1.8

0 个答案:

没有答案