Besides the AOP usage, the other major thing I'm seeing
using hprof for sampling is the VFS usage by the classloader.
I'll show some typical stacktraces:
Not much we can do about the biggest one,
since this is the JDK parsing the bytecode.
The only way to reduce this, is the reduce the number of classes loaded.
| java.lang.ClassLoader.defineClass1(ClassLoader.java:Unknown line)
| java.lang.ClassLoader.defineClass(ClassLoader.java:620)
|
org.jboss.classloader.spi.base.BaseClassLoader.access$200(BaseClassLoader.java:62)
|
org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:504)
|
org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:464)
| java.security.AccessController.doPrivileged(AccessController.java:Unknown
line)
|
org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:462)
|
org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:439)
|
org.jboss.classloader.spi.base.BaseDelegateLoader.loadClass(BaseDelegateLoader.java:134)
|
org.jboss.classloader.spi.filter.FilteredDelegateLoader.loadClass(FilteredDelegateLoader.java:131)
|
Reading byte code from zip files
| java.util.zip.Inflater.inflateBytes(Inflater.java:Unknown line)
| java.util.zip.Inflater.inflate(Inflater.java:215)
| java.util.zip.InflaterInputStream.read(InflaterInputStream.java:128)
| java.io.FilterInputStream.read(FilterInputStream.java:90)
|
org.jboss.virtual.plugins.context.zip.ZipEntryInputStream.read(ZipEntryInputStream.java:112)
|
org.jboss.classloader.plugins.ClassLoaderUtils.loadByteCode(ClassLoaderUtils.java:150)
|
org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:475)
|
org.jboss.classloader.spi.base.BaseClassLoader$2.run(BaseClassLoader.java:464)
| java.security.AccessController.doPrivileged(AccessController.java:Unknown
line)
|
org.jboss.classloader.spi.base.BaseClassLoader.loadClassLocally(BaseClassLoader.java:462)
|
This looks inefficient, it is listing a parent directory when we do getChild
| java.io.UnixFileSystem.checkAccess(UnixFileSystem.java:Unknown line)
| java.io.File.canRead(File.java:660)
|
org.jboss.virtual.plugins.context.file.FileHandler.getChildren(FileHandler.java:161)
|
org.jboss.virtual.plugins.context.file.FileSystemContext.createVirtualFileHandler(FileSystemContext.java:337)
|
org.jboss.virtual.plugins.context.file.FileSystemContext.createVirtualFileHandler(FileSystemContext.java:256)
|
org.jboss.virtual.plugins.context.file.FileHandler.createChildHandler(FileHandler.java:224)
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.structuredFindChild(AbstractVirtualFileHandler.java:509)
|
org.jboss.virtual.plugins.context.file.FileHandler.getChild(FileHandler.java:233)
| org.jboss.virtual.VirtualFile.getChild(VirtualFile.java:427)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.findVirtualFileInfo(VFSClassLoaderPolicy.java:488)
|
Modified checking
| java.io.UnixFileSystem.getLastModifiedTime(UnixFileSystem.java:Unknown line)
| java.io.File.lastModified(File.java:795)
|
org.jboss.virtual.plugins.context.zip.ZipFileWrapper.getLastModified(ZipFileWrapper.java:140)
|
org.jboss.virtual.plugins.context.zip.ZipEntryContext.getLastModified(ZipEntryContext.java:682)
|
org.jboss.virtual.plugins.context.zip.ZipEntryHandler.getLastModified(ZipEntryHandler.java:92)
|
org.jboss.virtual.plugins.context.DelegatingHandler.getLastModified(DelegatingHandler.java:107)
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.hasBeenModified(AbstractVirtualFileHandler.java:181)
|
org.jboss.virtual.plugins.context.file.FileHandler.getChildren(FileHandler.java:183)
|
org.jboss.virtual.plugins.context.file.FileSystemContext.createVirtualFileHandler(FileSystemContext.java:337)
|
org.jboss.virtual.plugins.context.file.FileSystemContext.createVirtualFileHandler(FileSystemContext.java:256)
|
I keep seeing this, not checked if it is a real inefficiency
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.getLocalPathName(AbstractVirtualFileHandler.java:230)
|
org.jboss.virtual.plugins.context.zip.ZipEntryContext.isLeaf(ZipEntryContext.java:751)
|
org.jboss.virtual.plugins.context.zip.ZipEntryHandler.isLeaf(ZipEntryHandler.java:110)
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.structuredFindChild(AbstractVirtualFileHandler.java:502)
|
org.jboss.virtual.plugins.context.zip.ZipEntryHandler.getChild(ZipEntryHandler.java:139)
|
org.jboss.virtual.plugins.context.DelegatingHandler.getChild(DelegatingHandler.java:93)
| org.jboss.virtual.VirtualFile.getChild(VirtualFile.java:427)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.findVirtualFileInfo(VFSClassLoaderPolicy.java:488)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.findChild(VFSClassLoaderPolicy.java:452)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.getResource(VFSClassLoaderPolicy.java:385)
|
Similarly this
|
java.util.concurrent.ConcurrentHashMap$Segment.get(ConcurrentHashMap.java:334)
| java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:731)
|
org.jboss.virtual.plugins.context.zip.ZipEntryContext.getRoot(ZipEntryContext.java:606)
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.getLocalPathName(AbstractVirtualFileHandler.java:230)
|
org.jboss.virtual.plugins.context.zip.ZipEntryContext.isLeaf(ZipEntryContext.java:751)
|
org.jboss.virtual.plugins.context.zip.ZipEntryHandler.isLeaf(ZipEntryHandler.java:110)
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.structuredFindChild(AbstractVirtualFileHandler.java:502)
|
org.jboss.virtual.plugins.context.zip.ZipEntryHandler.getChild(ZipEntryHandler.java:139)
|
org.jboss.virtual.plugins.context.DelegatingHandler.getChild(DelegatingHandler.java:93)
| org.jboss.virtual.VirtualFile.getChild(VirtualFile.java:427)
|
I'm still seeing the PathTokenizer showing up
|
org.jboss.virtual.plugins.vfs.helpers.PathTokenizer.getTokens(PathTokenizer.java:97)
|
org.jboss.virtual.plugins.context.AbstractVirtualFileHandler.structuredFindChild(AbstractVirtualFileHandler.java:475)
|
org.jboss.virtual.plugins.context.zip.ZipEntryHandler.getChild(ZipEntryHandler.java:139)
|
org.jboss.virtual.plugins.context.DelegatingHandler.getChild(DelegatingHandler.java:93)
| org.jboss.virtual.VirtualFile.getChild(VirtualFile.java:427)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.findVirtualFileInfo(VFSClassLoaderPolicy.java:488)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.findChild(VFSClassLoaderPolicy.java:452)
|
org.jboss.classloading.spi.vfs.policy.VFSClassLoaderPolicy.getResource(VFSClassLoaderPolicy.java:385)
|
org.jboss.classloader.spi.base.BaseClassLoader$3.run(BaseClassLoader.java:567)
|
org.jboss.classloader.spi.base.BaseClassLoader$3.run(BaseClassLoader.java:564)
|
View the original post :
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4166367#...
Reply to the post :
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&a...