Skip to content
This repository has been archived by the owner on Mar 14, 2019. It is now read-only.

讨论下跟踪系统方法的问题及native方法的问题 #44

Open
jht5945 opened this issue Jun 16, 2012 · 4 comments
Open

讨论下跟踪系统方法的问题及native方法的问题 #44

jht5945 opened this issue Jun 16, 2012 · 4 comments

Comments

@jht5945
Copy link

jht5945 commented Jun 16, 2012

借宝地再讨论一个问题,我们维护的应用因为某些原因会导致perm区慢慢变大,主要的原因是定义类变多,或调用了 String.intern (在 JDK6 及以前会将 String 在perm区也定义一份),但要查这样的问题不容易,如果是定义类我们可以打开 -verbose:class 或使用 BTrace 跟踪 ClassLoader.defineClass ,但 BTrace 无法跟踪 String.intern ,我猜应该和 internnative 方法有关,所以我使用了一种曲线救国的方式,先通过 ASM 写的一个程序把所有调用 String.intern 的类和方法全部找出来,再对这些方法用 BTrace 跟踪,这样的确能解决这个问题,不知道你有什么想法?
还有个问题我发现 HouseMD 过滤了系统的一些类的跟踪,但 BTrace 可以,而且很实用,不知道这个是出于什么考虑?
再PS一个问题,如在跟踪 String.intern 的问题的时候,我会对怀疑的多个类或方法加 BTrace 跟踪,但我发现 HouseMD 一次只能跟踪一个方法,在解决我上面那一例问题的时候会很不方便。

@zhongl
Copy link
Member

zhongl commented Jun 16, 2012

native方法的跟踪这还真没有考虑过,先解释后面的问题:

  1. 为了检测预防特定类加载器找不到Advice类的问题,我采取淫技 Avoid external class dependency for injected classloader #17 来应对,具体请见Transformer. 这里就要避免类加载器为空null的问题,最后图方便就禁止跟踪所有从BootClassLoader加载的类了, 囧
  2. 跟踪支持多个方法的, 请仔细看帮助或用户指南中的范例.

@zhongl
Copy link
Member

zhongl commented Jun 16, 2012

Hatter有没有兴趣来帮HouseMD实现这个支持JDK的库类跟踪特性啊?

@jht5945
Copy link
Author

jht5945 commented Jun 16, 2012

这个我抽时间学习下

@zhongl
Copy link
Member

zhongl commented Jun 20, 2012

开发指南, 期待你的参与!

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants