Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Java 8 Method Graph in Respect to Performance

DZone's Guide to

Java 8 Method Graph in Respect to Performance

· Performance Zone ·
Free Resource

xMatters delivers integration-driven collaboration that relays data between systems, while engaging the right people to proactively resolve issues. Read the Monitoring in a Connected Enterprise whitepaper and learn about 3 tools for resolving incidents quickly.

It may involve synchronized blocks and/or methods when you call methods of Java platform. If the method you call itself is synchronized you may be noted by tiny icon or otherwise within IDE such as Eclipse in auto-proposal coding, but probably the synchronized is involved potentially, that would become problematic in situation of single threaded performance critical program and it’s not easy to find out. By parsing rt.jar using ASM, this document presents a full calling graph of methods of rt.jar of Java 8 to help quick check, it’s organized in a tree formatted with indents with below rules.

  • S denotes synchronized method
  • SI denotes synchronized block inside method body
  • Parent node is called by children
  • awt and swing packages are excluded
  • The first level must be synchronized on either method or block

Below is just a sample, it's too long to post, if you need please feel free to email me.

  SI java/io/FileInputStream.getChannel()Ljava/nio/channels/FileChannel;
     sun/nio/cs/StreamDecoder.getChannel(Ljava/io/FileInputStream;)Ljava/nio/channels/FileChannel;
  SI java/io/FileOutputStream.close()V
     sun/rmi/log/ReliableLog.writeVersionFile(Z)V
     sun/rmi/log/ReliableLog.createFirstVersion()V
     sun/rmi/log/ReliableLog.getVersion()V
     com/sun/corba/se/impl/util/ORBProperties.main([Ljava/lang/String;)V
     sun/applet/AppletProps$2.run()Ljava/lang/Object;
     java/awt/color/ICC_Profile.write(Ljava/lang/String;)V
     sun/security/tools/keytool/Main.doCommands(Ljava/io/PrintStream;)V
     com/sun/xml/internal/org/jvnet/staxex/Base64Data$Base64StreamingDataHandler.moveTo(Ljava/io/File;)V
S    sun/security/krb5/internal/ccache/FileCredentialsCache.save()V
     sun/net/www/MimeTable.saveAsProperties(Ljava/io/File;)Z
S    sun/net/www/MimeTable.save(Ljava/lang/String;)Z
S    javax/management/modelmbean/RequiredModelMBean.writeToLog(Ljava/lang/String;Ljava/lang/String;)V
     java/io/FileOutputStream.finalize()V
     java/lang/ProcessImpl.start([Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;[Ljava/lang/ProcessBuilder$Redirect;Z)Ljava/lang/Process;
     com/sun/media/sound/StandardMidiFileWriter.write(Ljavax/sound/midi/Sequence;ILjava/io/File;)I
     jdk/management/resource/internal/inst/StaticInstrumentation.writeOutputClass(Ljava/io/File;[B)V
  SI java/io/FileOutputStream.getChannel()Ljava/nio/channels/FileChannel;
  SI java/io/FilePermissionCollection.add(Ljava/security/Permission;)V
  SI java/io/FilePermissionCollection.elements()Ljava/util/Enumeration;
  SI java/io/FilePermissionCollection.implies(Ljava/security/Permission;)Z
  SI java/io/FilePermissionCollection.writeObject(Ljava/io/ObjectOutputStream;)V


Discovering, responding to, and resolving incidents is a complex endeavor. Read this narrative to learn how you can do it quickly and effectively by connecting AppDynamics, Moogsoft and xMatters to create a monitoring toolchain.

Topics:
java 8 ,performance ,synchronized

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}