我正在使用Java编写算法实现.在OS X 10.7之前,我使用Shark Profiler来分析我的实现,它的工作非常好.但是,新仪器不再找到程序名称.我已经尝试使用鲨鱼的VM参数运行java应用程序(即-agentlib:Shark),但它们对于10.7是未知的,我找不到这样的工具的agentlib.
有关如何将过程名称附加到Insturments中的符号名称(有些十六进制数字)的任何想法?我正在使用Eclipse Indigo,如果这有任何区别的话.
谢谢!
编辑:到目前为止,OS X Mountain Lion没有任何改变.
编辑#2:来自(?)开发人员的更新通过apple的bug报告者:
dtrace过去一直支持Java堆栈,但老实说我不能说是否支持了这种支持.对于您要测量的内容而言,这可能是一种可行的解决方法 - 此时,这不是性能工具的优先级.您可能希望从/usr/bin/cpu_profiler.d中的D脚本开始并修改它以收集jstack.
编辑#3:好的,经过一些更多的讨论后发现开发人员本身并不知道该脚本的来源.显然,仪器中的时间分析器无论如何都不使用DTrace,因此唯一的选择是编写我们自己的DTrace脚本或仪器.
你是对的,我道歉.我不确定那个脚本来自哪里,当我仔细查看它时,它没有jstack动作,所以它不是你想要的.看起来我能提供的唯一java分析选项是DTrace.DTrace有一个配置文件提供程序,以及一个收集java堆栈的jstack操作.您可以使用"聚合"来确定最重的堆栈跟踪,所有这些都可以从命令行进行.DTrace的文档主要由Sun维护,我会引导您访问任何DTrace教程,因为大多数都涵盖了配置文件提供程序.
尽管人们在网上说,仪器不会将DTrace用于所有内容,特别是时间分析,因此我无法在仪器UI中为您提供快速修复.
我是Ruby on Rails的初学者.目前,我有以下问题:我有一个类Game
,其中包含一系列图片和句子交替.我希望创建新用户的用户Game
需要提供一个起始图片或句子.如果他不这样做,我不想将新创建的游戏保存到数据库中.
class Game < ActiveRecord::Base
has_many :sentences
has_many :paintings
validates_inclusion_of :starts_with_sentence, :in => [true, false]
[...]
end
Run Code Online (Sandbox Code Playgroud)
我的方法是在/ games/new上,用户必须先给出一个绘画或一个句子,但我不确定如何强制执行此操作,尤其是如何在一个父对象中创建和保存子对象步.