在值得重用之前,缓冲区需要有多大的缓冲区?
或者,换一种方式:我可以重复分配,使用和丢弃byte []对象或运行池来保存和重用它们.我可能会分配很多经常被丢弃的小缓冲区,或者一些不会被丢弃的大缓冲区.汇集它们的大小比重新分配要便宜,小分配与大分配相比如何?
好的,具体参数.说英特尔酷睿2双核CPU,最新的虚拟机版本,适用于操作系统.这个问题并不像听起来那么模糊......一些小代码和一个图表可以回答它.
你发布了很多很好的一般规则和讨论,但这个问题确实要求数字.发布'em(和代码)! 理论很棒,但证据就是数字.如果各个系统的结果有所不同并不重要,我只是在寻找一个粗略的估计(数量级).似乎没有人知道性能差异是1.1,2,10或100+的因素,这是重要的.对于使用大型阵列的任何Java代码来说都很重要 - 网络,生物信息学等.
建议获得良好的基准:
我知道这是一个模糊且有点苛刻的问题.我会定期查看这个问题,答案会得到评论并持续评分.懒惰的答案不会(见下面的标准).如果我没有任何彻底的答案,我会附上一笔赏金.无论如何,我可能会额外奖励一个非常好的答案.
我正在开发一个库,为Java添加LZF压缩支持.该库通过添加额外的压缩级别(更多压缩)以及与来自C LZF库的字节流的兼容性来扩展H2 DBMS LZF类.我正在考虑的一件事是,是否值得尝试重用用于压缩/解压缩流的固定大小的缓冲区.缓冲器可以是~8kB,或~32kB,并且在原始版本中它们是~128kB.可以为每个流分配缓冲器一次或多次.我正在试图找出我想如何处理缓冲区以获得最佳性能,并着眼于将来可能的多线程.
是的,如果有人有兴趣使用它,库将作为开源发布.
我现在正在阅读R的一些书籍,但我想知道我是否可以使用这种语言,因为我使用的是Perl或Ruby.像:
但通常和简单(如在Perl或Ruby中)做这样的事情?
PS:我非常喜欢这种语言,因此我想在我的个人项目中使用它并将其传播给我的朋友和互联网.
Android是否支持查看SVG文件或Android平台是否有任何第三方SVG查看器?
我知道,给予足够的情况下,人们可以希望建设性地使用(即恢复)从段错误条件.
但是,努力值得吗?如果是,在什么情况下?
尝试运行以下代码:
class Test(object):
def func_accepting_args(self,prop,*args):
msg = "%s getter/setter got called with args %s" % (prop,args)
print msg #this is prented
return msg #Why is None returned?
def __getattr__(self,name):
if name.startswith("get_") or name.startswith("set_"):
prop = name[4:]
def return_method(*args):
self.func_accepting_args(prop,*args)
return return_method
else:
raise AttributeError, name
x = Test()
x.get_prop(50) #will return None, why?!, I was hoping it would return msg from func_accepting_args
Run Code Online (Sandbox Code Playgroud)
任何人都解释为什么没有返回?
我正在尝试找到在MAMP服务器上运行Ruby on Rails并使用MAMP的mySQL数据库的分步说明.我也在雪豹上.我已经阅读了Hivelogic关于此的文章,但我真的不想编译rails,ruby和mySQL.
任何人都有任何建议
我有以下一段代码,只是想查看谁将调用dispose?它是自动调用的.
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(button, toolTipText);
Run Code Online (Sandbox Code Playgroud)
还要说我创建一个Timer局部变量,谁会调用dispose,内存泄漏怎么样,如果我立即调用dispose,那么timer事件就不会被触发.
我是否需要确保在调用计时器事件处理程序中调用,即使我没有对timer变量的任何引用.我还需要取消注册该计时器的事件处理程序.
编辑:
现在我有java程序,其类目前是POJO并存储在易失性存储器中.这些都需要坚持下去.据我所知,两个流行的选择是JDO和Java Persistence API.对于那些对SQL,Torque等知之甚少的人来说,这是为程序数据添加持久性的最简单方法吗?
我正在寻找版本控制数据库,并且遇到了关于如何执行此操作的常规文章(编码恐怖,代码颂歌等).这对我来说都很有意义,但是我正在尝试找一个能为我运行sql脚本的脚本运行器.所有这些文章都提到了自动运行它们的东西,但它们都没有提出任何建议.
有没有人知道运行这些脚本的任何工具?理想情况下,以下列方式工作:
可以作为自动化任务的一部分运行
编辑
开源
我一直在做很多搜索,我知道很多其他人都遇到了同样的OOM内存问题BitmapFactory.我的应用程序仅显示可用的4MB内存总量Runtime.getRuntime
().totalMemory().如果限制是16MB,那么为什么总内存不会增长以便为位图腾出空间呢?相反,它会抛出错误.
我也不明白,如果我有1.6MB的可用内存,根据Runtime.getRuntime().freeMemory()为什么我会收到错误说"VM不会让我们分配614400字节"?在我看来,我有足够的可用内存.
我的应用程序是完整的,除了这个问题,当我重新启动手机时,它会消失,以便我的应用程序是唯一运行的东西.我正在使用HTC Hero进行设备测试(Android 1.5).
在这一点上,我认为解决这个问题的唯一方法是以某种方式避免使用BitmapFactory.
任何人对此有任何想法或解释为什么当1.6MB的可用内存时VM不会分配614KB?
android ×2
java ×2
c# ×1
database ×1
dispose ×1
jdo ×1
linux ×1
mamp ×1
mysql ×1
optimization ×1
performance ×1
persistence ×1
project ×1
python ×1
r ×1
sql ×1
svg ×1
versioning ×1