考虑以下方法模板:
methodA()
{
Print (abc); // Instruction 1
Calculate(a+b+c); // Instruction 2
Call methodB();// Instruction 3
Call methodC();// Instruction 4
Print(abcd); // Instruction 5
for(; ;) // Instruction 6
{
. ..
}
}
Run Code Online (Sandbox Code Playgroud)
JProfiler中methodA()的固有时间显示了methodA()单独使用的总时间.这个固有时间是CPU时间+ I/O等待时间的总和还是只是CPU时间?
我有一个奇怪的问题,Hibernate运行的查询比我要求的多,并且看不到需要.
这是我的控制器:
@Autowired UserService users;
@RequestMapping("/test")
@ResponseBody
public String test() {
User user = users.findUser(1L);
return "Found user: "+user.getEmail();
}
Run Code Online (Sandbox Code Playgroud)
这是UserService:
@Component
public class UserService {
@javax.persistence.PersistenceUnit private EntityManagerFactory emf;
private JpaTemplate getJpaTemplate() {
return new JpaTemplate(emf);
}
public User findUser(long id) {
long start = System.currentTimeMillis();
JpaTemplate jpaTemplate = getJpaTemplate();
User user = jpaTemplate.find(User.class, id);
System.out.println(System.currentTimeMillis() - start);
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
对findUser()的调用大约需要140ms ......相当令人费解.数据库对其他查询执行得很好,包括一些处理程序中的这个(我怀疑它不是第一个查询运行时).
JProfiler建议每次调用它时,会向数据库发送四个查询(不一定按此顺序):
1) [5ms] select user... (the actual query) 2) [7ms] SHOW COLLATION 3) …
我JProfiler用于分析我的应用程序,因为它是一个巨大的应用程序,所以我非常了解它的性能和效率.
这花了太长时间,所以我更换所有Iterator.hasNext,for-each但当我在JProfilers CPU视图中看到它显示我Iterator.hasNext调用的方法我正在使用for-each.
为什么这样?这两者之间有什么关系吗?这是示例代码:
List<Map<String, Object>> mapList = jdbcTemplate
.queryForList(MAP.SELECT_ALL);
for (Map<String, Object> map : mapList) {
list.add(fillPreferenceMaster(preferenceMasterMap));
}
Run Code Online (Sandbox Code Playgroud) 在过去的几天里,我一直在使用JProfiler来配置本地运行的Websphere 7服务器(来自RAD8内部).我使用了JProfiler的服务器集成功能来连接到WAS实例.
我现在想要从WAS服务器实例中删除分析 - 每当我启动服务器时它显示为"分析" - 即使JProfiler没有运行.你如何从服务器"取消"JProfiler?
我的应用程序需要大约10 GB的RAM用于特定输入,其中常规输入大约1 GByte就足够了.使用JProfiler进行更密切的分析表明(在GC之后)标准类使用了相当多的内存java.util.*:
LinkedHashMap$Entry,HashMap$Entry[],LinkedHashMap,HashMap$KeySet,HashMap$EntrySet,LinkedHashSet,TreeMap$Entry,和TreeMap(以该顺序),和相关的类.以下条目是我自己的代码中的一个类,其中实例的数量和使用的内存量似乎非常合理.
详细说明总堆使用量约为900 MB,我Size在All Objects视图中看到以下条目:
LinkedHashMap$Entry:418 MByteHashMap$Entry[]:178 MByteLinkedHashMap:124 MByteHashMap$KeySet:15 MByte使用的内存LinkedHashMap似乎太高,即使考虑到每个LinkedHashSet都由a支持LinkedHashMap.
我在JProfiler中记录了对象分配并观察了Allocation Hot Spotsfor LinkedHashMap.在那里,我看到了我不理解的条目:
X.<init>其中,X在我自己的代码的类.这种方法的构造函数没有任何关系LinkedHashMap.此次进入Thread.run结束后显示从6.5%缓慢下降至5.8%Thread.run.我的代码可能有什么问题X?为什么在这里显示?java.util.HashSet.iterator.沿着具有最高百分比(第一个条目:2.8%)的路径进入此条目之后,我在代码中获得了几个方法,直到最后java.lang.Thread.run显示(具有2.8%).这是什么意思?据我所知,该Thread.run方法不会创建实例LinkedHashMap.该iterator方法的连接是什么?一般来说,如何找到引用(很多)LinkedHashMap …
如果我转到JProfiler->CPU views->Call tree并按Record CPU,我可以轻松检测到当我在应用程序中执行特定操作时调用了哪些方法。
如果我正在执行不同的操作,我想从视图中清除以前的结果。JProfiles有这样的功能吗?
我正在使用JProfiler来调试一些锁争用问题.我可以在监视器历史记录中看到有问题的阻塞锁定用法,并且可以看到等待线程和拥有线程的已过滤堆栈跟踪.但是,堆栈跟踪不显示任何行信息.有没有办法让这些回溯?
我正试图介绍我的Android应用.我安装了JProfiler插件
IntelliJ IDEA - >首选项 - >插件
这是插件描述的屏幕截图:

当我尝试运行探查器时没有任何反应,我收到此消息说JProfiler可执行文件为null:

有关如何解决此问题的任何想法?
我是第一次使用jprofiler,首先我下载了JProfiler,然后安装了JProfiler。请帮助我如何用jboss服务器配置jprofiler。我们不使用jboss服务器的默认部署,我们有特定的部署,例如C:\ jboss-4.2.2.GA \ server \ test \,我们的应用程序部署在测试文件夹中,如何使用jprofiler配置测试部署文件夹?
当我使用jmap创建转储时
jmap -J-d64 -heap:format=b ${pid}
Run Code Online (Sandbox Code Playgroud)
我可以heap.bin在JProfiler中以某种方式打开结果吗?