我知道Yourkit可以测量Thread.sleep()之类的方法的时间,但是unsafe.park本机方法又如何呢?波纹管是采样设置:
walltime = java.io.RandomAccessFile:readBytes(byte [],int,int)walltime = java.io.RandomAccessFile:read()walltime = java.io.RandomAccessFile:write(int)walltime = java.io.RandomAccessFile:writeBytes (byte [],int,int)walltime = java.net.SocketInputStream:socketRead0(java.io.FileDescriptor,byte [],int,int,int)walltime = java.net.SocketOutputStream:socketWrite0(java.io.FileDescriptor ,byte [],int,int)walltime = java.lang.Thread:sleep(*)
sample_period_ms = 20
似乎unsafe.park()没有使用walltime,因此它必须是CPU时间。根据Yourkit文档,CPU时间是该方法花费的CPU实际时间,而不仅仅是该方法进入和退出之间的时间。
Yourkit展示了很多时间都花在park()方法上,但是我认为CPU并没有花很多时间在park()方法上。您能确认一下吗?谢谢。
一种方法是直接调用HTable构造函数,另一种方法是从HConnection调用getTable方法.第二个选项要求HConnection为"非托管",这对我来说不是很好,因为我的进程将有许多线程访问HBase.我不想重新发明轮子来自己管理HConnections.
谢谢你的帮助.
[更新]:我们坚持使用0.98.6,因此ConnectionFactory不可用.
我发现bellow jira建议创建一个"非托管"连接并使用单个ExecuteService来创建HTable.为什么我们不能简单地使用非托管连接的getTable方法来获取HTable?那是因为HTable不是线程安全吗? https://issues.apache.org/jira/browse/HBASE-7463