- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
为了使用 JDK 5 中引入的检测功能,您可以使用传递给 JVM 的 -javaagent
标志。这会将 Instrumentation 类的实例注入(inject)到静态 premain
方法中。例如在这样的类中:
public class MyClass {
public static Instrumentation inst;
public static void premain(String options, Instrumentation inst) {
MyClass.inst = inst;
}
}
使用适当的 list 文件,您可以按如下方式运行:
java -javaagent:myfiles.jar SomeClass
这会调用 SomeClass
中的 premain 方法,然后调用 main
。 Java.SizeOf Project 中使用了这种方法猜测 Java 对象的大致大小。
好的,现在在 Eclipse RCP 中 each bundle has its own classloader .这意味着我们存储在 MyClass 中的静态 Instrumentation 对 Eclipse 应用程序不可见。 javaagent 使用一个类加载器,Eclipse 包使用另一个加载。当我们从插件中访问 MyClass.inst
时,它是 null
,因为 that 类与 javaagent 加载的类不同,并且调用了 premain
。
关于可能解决方案的其他线索是 this thread在 rcp 邮件列表上。但没有定论。
有什么办法可以解决这个问题吗? eclipsezone 文章中暗示的 Eclipse-BuddyPolicy
听起来不错。我试过:
Eclipse-BuddyPolicy: app
在我的插件中没有运气。我需要像 Eclipse-BuddyPolicy: javaagent
这样的东西。有什么想法吗?
最佳答案
我认为最简单的解决方案是使用全局属性对象。让 pre-main 将检测对象存储为全局属性,然后从任何地方访问它(属性对象在所有类加载器中都是相同的):
[编辑:更新]
public class MyClass {
private static final String KEY = "my.instrumentation";
public static void premain(String options, Instrumentation inst) {
Properties props = System.getProperties();
if(props.get(KEY) == null)
props.put(KEY, inst);
}
public static Instrumentation getInstrumentation() {
return System.getProperties().get(KEY);
}
}
关于java - 如何在 Eclipse RCP 应用程序中使用 java.lang.instrument?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063829/
这个问题在这里已经有了答案: What is instrumentation? (5 个回答) 4年前关闭。 正如标题所暗示的那样。很多解释真的很模糊,谁能提供一个更可靠的定义? 该术语在 Andro
我正在使用java.lang.instrument包来获取java对象的内存大小(可以嵌套)。 我使用下面的方法来获取对象大小: import java.lang.instrument.Instrum
Xcode Instruments 中是否有一个 Instrument 可以记录我的代码进行的所有调用(无论是否有 Apple 自己的框架)。 最接近的工具似乎是 Time Profiler。 但是,
当我使用 xCode 运行我的应用程序时,所有负载都运行良好。当我使用 Activity Monitor 或 Allocations 的分析模板加载 Instruments 并按下记录时,它加载并运行
如果我尝试使用 import java.lang.instrument.Instrumentation; 它说这个语句无法解决。可能出什么问题了?我使用的是jdk1.6。 最佳答案 您确定这正是您的导
当我尝试运行 SignUpFragmentTest 类时,出现错误“未注册检测!必须在注册检测下运行”。我认为当我使用@Rule 时会抛出错误。 import android.support.test
是否可以在 JUnit 测试中使用 java.lang.instrument.Instrumentation?我正在使用 mockrunner 来模拟一个 Servlet,并想测量 session 中
我最近搬到了另一台电脑,需要重置我的所有环境。 所以,这个测试以前是有效的。 但是我不记得我以前使用的是哪个版本的 Java/JDK。 好吧,问题是: java.lang.instrument.Ill
我是 Xcode 和 iOS 的新手,今天一直在尝试使用 Instruments 工具。有些事情我正在努力解决: 场景: 我创建了一个简单的应用程序,它使用 UISearchBar 过滤 UITabl
我使用 java.lang.instrument.Instrumentation#redefineClasses() 重新定义现有类。有时,我需要重新定义几个类。 如果我一个一个地重新定义类,我就会知
要检查 iOS 应用程序的内存使用情况,请说代码是否为 int n = 1000000; NSObject *bar = [[NSObject alloc] init]; foo = [[NSMuta
我正在尝试通过 Corda Hello world example (特别是 Java 版本)。 我已经到了 nodes should be deployed但这失败了: > ./gradlew cl
(Xcode 4.5) 当从命令行运行仪器时,它第一次可以工作,但直到我重新启动后它才会再次运行。 仪器的详细输出包括: Instruments : Loading template 'file://
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 2年前关闭。 Improve this questi
我是 zipkin 和 brave api 的新手,用于分发跟踪。我在本地主机上设置了一个 zipkin 服务器,监听端口 9411。我执行了下面的函数,但在我的 zipkin 服务器中没有显示任何跟
我正在开发一个名为 "Cloudnet-v3" 的开源项目。我在本地计算机上使用符号链接(symbolic link)/data 到 IntelliJProjects-Folder 中的数据点。 我得
我目前正在使用 Android 仪器测试测试我的示例应用程序。默认情况下,项目创建 AndroidTest文件夹给我。我只是在文件夹中添加了更多测试用例。 我以前用expresso触发 UI 按钮,但
好的,这是我的问题,如果重复,我深表歉意。我进行了搜索,但找不到任何我认为相关的内容。 当我从 xcode 运行仪器并开始测试我的应用程序是否存在内存泄漏或分配时,我的 iMac 最终开始运行得很慢。
我在 Xcode 中启动 Time Profiler 时遇到问题,无论是 Mac 应用程序还是 iPhone 应用程序。 我尝试过的步骤是打开时间分析器,单击选择目标下拉框,选择我的 iPhone 或
我想调试我的核心动画代码。但是,仪器配置文件不存在,并且在仪器库中也不可用。 我正在使用 Xcode 4。如何安装/访问它并使其正常工作? 最佳答案 核心动画分析只能从设备上获得。如果您正在分析模拟器
我是一名优秀的程序员,十分优秀!