× - 코드 및 콘솔 화면은 [ code ] 내용 [ /code ] 태그 처리하여 주세요.
- 강조하고자 하는 내용은 [ b ] 내용 [ /b ] 태그 처리하여 주세요.

자바 프로그램이 빠르다 느리다 합니다.

  • kia94568
    (케이나인)
  • kia94568's Avatar 이 글의 작성자
  • Offline
  • Newbie
  • Newbie
더보기
21 Jan 2017 12:04 #1856 작성자: kia94568
kia94568 님의 글: 자바 프로그램이 빠르다 느리다 합니다.
현재 문제가 되는 부분은 config 파일을 읽어들인 후 처리하는 부분인데
로그를 찍어보면 전혀 느릴 것이 없는 부분에서 (객체 초기화, null 처리) 10초 이상 대기하는 경우가 있습니다.

그래서 아래와 같이 스레드 단면을 만들어보았는데 혹시 원인을 알 수 있을까요;;

Full thread dump Java HotSpot(TM) Client VM (1.4.2_19-b04 mixed mode):

"Signal Dispatcher" daemon prio=1 tid=0x080e59f8 nid=0x2de0 waiting on condition [0x00000000..0x00000000]

"Finalizer" daemon prio=1 tid=0x080e2260 nid=0x2dde in Object.wait() [0xeabff000..0xeabff168]
	at java.lang.Object.wait(Native Method)
	- waiting on <0xeb38d980> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
	- locked <0xeb38d980> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=1 tid=0x080e1628 nid=0x2ddd in Object.wait() [0xead8e000..0xead8e168]
	at java.lang.Object.wait(Native Method)
	- waiting on <0xeb38d9e8> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:429)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
	- locked <0xeb38d9e8> (a java.lang.ref.Reference$Lock)

"main" prio=1 tid=0x080abab0 nid=0x2ddb runnable [0xffab3000..0xffab5308]
	at java.io.FileInputStream.readBytes(Native Method)
	at java.io.FileInputStream.read(FileInputStream.java:194)
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:220)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
	- locked <0xeaeadeb0> (a java.io.BufferedInputStream)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:183)
	at java.io.BufferedInputStream.read1(BufferedInputStream.java:222)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:277)
	- locked <0xeaeadca8> (a java.io.BufferedInputStream)
	at sun.security.provider.SeedGenerator$URLSeedGenerator.getSeedByte(SeedGenerator.java:467)
	at sun.security.provider.SeedGenerator.getSeedBytes(SeedGenerator.java:137)
	at sun.security.provider.SeedGenerator.generateSeed(SeedGenerator.java:132)
	at sun.security.provider.SecureRandom.engineGenerateSeed(SecureRandom.java:112)
	at sun.security.provider.SecureRandom.engineNextBytes(SecureRandom.java:169)
	- locked <0xeaead758> (a sun.security.provider.SecureRandom)
	at java.security.SecureRandom.nextBytes(SecureRandom.java:381)
	- locked <0xeaf10dd8> (a java.security.SecureRandom)
	at java.security.SecureRandom.next(SecureRandom.java:403)
	at java.util.Random.nextLong(Random.java:282)
	at java.io.File.generateFile(File.java:1291)
	at java.io.File.createTempFile(File.java:1399)
	at java.io.File.createTempFile(File.java:1437)
	at sun.net.www.protocol.jar.URLJarFile$1.run(URLJarFile.java:169)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.net.www.protocol.jar.URLJarFile.retrieve(URLJarFile.java:164)
	at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:42)
	at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:53)
	at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:85)
	at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:107)
	at java.net.URL.openStream(URL.java:913)
	at sun.misc.URLClassPath$Loader.findResource(URLClassPath.java:471)
	at sun.misc.URLClassPath.findResource(URLClassPath.java:141)
	at java.net.URLClassLoader$2.run(URLClassLoader.java:352)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findResource(URLClassLoader.java:349)
	at java.lang.ClassLoader.getResource(ClassLoader.java:813)
	at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:995)
	at javax.xml.parsers.FactoryFinder.find(FactoryFinder.java:160)
	at javax.xml.parsers.DocumentBuilderFactory.newInstance(DocumentBuilderFactory.java:93)
	at com.kia.commonutil.XmlParser.getDocument(XmlParser.java:51)
	at com.kia.commonutil.XmlParser.exec(XmlParser.java:34)
	at com.kia.scanner.conf.ConfReader.readFile(ConfReader.java:33)
	at com.kia.scanner.conf.ConfReader.fork(ConfReader.java:24)
	at com.kia.main(Main.java:40)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:324)
	at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)

"VM Thread" prio=1 tid=0x080e0498 nid=0x2ddc runnable

"VM Periodic Task Thread" prio=1 tid=0x080e8240 nid=0x2de2 waiting on condition
"Suspend Checker Thread" prio=1 tid=0x080e5008 nid=0x2ddf runnable
  • short3300
    (스벅오늘의커피)
  • short3300's Avatar
  • Offline
  • Junior
  • Junior
더보기
21 Jan 2017 21:58 #1859 작성자: short3300
short3300 님의 답글: 자바 프로그램이 빠르다 느리다 합니다.
메인 스레드에서 java.security.SecureRandom.next 부분이 눈에 띄네요. SecureRandom 관련된 부분이 있는 것 같구요.

어떤 작업을 위한 충분한 엔트로피 수집이 안되서 그런 것 같다는 생각이 듭니다. 물론 정답은 아닐 수 있고요.
Time to create page: 0.190 seconds
Powered by Kunena Forum