从ThreadLocal
变量读取多少比常规字段慢?
更具体地说,简单的对象创建比访问ThreadLocal
变量更快还是更慢?
我认为它足够快,因此ThreadLocal<MessageDigest>
实例比MessageDigest
每次创建实例要快得多.但这也适用于字节[10]或字节[1000]吗?
编辑:问题是在调用ThreadLocal
get 时真正发生的事情?如果那只是一个领域,就像任何其他领域一样,那么答案就是"它总是最快",对吧?
什么是最好的Java原始集合库?(大多数记忆和时间效率)
我发现了Trove和FastUtil是最常用的,但还没有找到他们(或其他人之间)比较多
有比较可用吗?
有没有办法创建扩展ByteBuffer类的类?
ByteBuffer的一些抽象方法是包私有的,如果我创建包java.nio,则抛出安全异常.
出于性能原因,我想这样做 - 例如,getInt有大约10个方法调用,以及相当多的if.即使剩下所有检查,只有方法调用被内联并且大/小端检查被删除,我创建的测试表明它可以快4倍.
是什么意思AtomicIntegerArray
和AtomicInteger[]
?哪一个更快使用?(我注意到的只是第一个占用更少的空间,但这意味着每次重新检查都会检查数组的边界,这会使它变慢?)
编辑:在阵列预先初始化的情况下.
有没有办法创建Executor,它总是至少有5个线程,最多20个线程,以及任务的无界队列(意味着没有任务被拒绝)
我尝试了新ThreadPoolExecutor(5, 20, 60L, TimeUnit.SECONDS, queue)
的所有可能性,我想到的队列:
new LinkedBlockingQueue() // never runs more than 5 threads
new LinkedBlockingQueue(1000000) // runs more than 5 threads, only when there is more than 1000000 tasks waiting
new ArrayBlockingQueue(1000000) // runs more than 5 threads, only when there is more than 1000000 tasks waiting
new SynchronousQueue() // no tasks can wait, after 20, they are rejected
Run Code Online (Sandbox Code Playgroud)
没有人按原样工作.
是否有可能从程序内部调用一些java库,使java创建该程序的内存快照?(默认.hprof文件)
问题是我需要在运行时创建一个这样的类:
public class Foo {
@Bar int value0;
@Bar int value1;
@Bar int value2;
....
}
Run Code Online (Sandbox Code Playgroud)
在运行时决定字段数.
我在看Javassist,在那里你可以创建一个新类,并为其添加字段,但我还没有找到一种方法来注释这些字段.
java ×7
performance ×2
annotations ×1
bytebuffer ×1
collections ×1
concurrency ×1
field ×1
javassist ×1
memory ×1
nio ×1
profiling ×1
snapshot ×1
thread-local ×1
threadpool ×1