当前位置: 首页 > 知识库问答 >
问题:

JVM设置的对象标记对JVMTI代理是否可见?

荣德厚
2023-03-14

JVMTI代理通常需要遍历Java堆并精确访问每个活动对象一次。一种技术是调用FollowReferences并通过以下方法避免多次遍历给定对象

    null

共有1个答案

羊舌洛华
2023-03-14

阅读jvmtitagmap.cpp中的热点代码并观察到相应的头文件只包含在JVMTI代码中,看来垃圾回收器很有可能没有使用标记映射来进行自己的标记。

因此,问题的答案几乎可以肯定,JVM本身设置的标记在JVMTI环境中是不可见的。

 类似资料:
  • null 在当前的JVMTI代理中已经被大量使用,所以我正在寻找一种更快的方法来获取标记或实现我自己的机制,同时保持在C端。

  • 我想知道如何使用AttachAPI与我附加在运行的JVM上的jvmti代理进行通信。当我说Communication时,我的意思是:我想调用位于我的jvmti代理上的本机函数,这些函数将向我返回我先前通过代理“感染”的正在运行的JVM的数据(如字段值)。

  • 问题内容: 我有一个Spring bean,可以这样说: 现在,我想对其进行集成测试,但是首先,我需要模拟依赖项,因为它做了很多事情。由于该实现实现了一个接口并包含一个事务注释,因此生成的代理仅与兼容,因此我可以这样做: 但不能: 结果,我无法嘲笑我的依赖关系。 请注意,添加到界面A不是一种选择,因为它没有任何商业意义。它都不使用,因为它会破坏很多其他bean(此属性会影响上下文中的所有bean)

  • 问题内容: 当我尝试运行以下代码时: 我得到以下异常: 如何成功使用包含s的对象? 问题答案: 在序列化之前将集合变成列表,或使用自定义处理程序来这样做:

  • 我有一个问题要问这里的JVM内部专家。 在Java虚拟机中,对象内容存储在堆内存中,直到被垃圾回收为止。通常,GC是在没有更多可用内存的情况下发生的,因此如果JVM有大量可用空间,那么GC发生之前可能需要很长时间。 从安全的角度来看,您能想象有人访问JVM内存并获得堆空间的转储,在那里可以找到等待GC的未使用对象吗? 我的意思是:如果我的程序处理敏感数据,并且在执行涉及这些敏感对象的过程后,我的应