热点JVM标志-XX:+UseCompressedOops
做什么以及何时应该使用它?在64位Java实例上使用它时(不使用它),我会看到什么样的性能和内存使用差异?
我支持需要低延迟(每个消息处理<300微秒)的Java消息传递应用程序.但是,我们的分析显示Sun Java虚拟机最初运行缓慢,并且在前5,000条消息之后加速.前5,000条消息的延迟为1-4毫秒.在大约前5,000个后,后续消息的延迟约为250微秒,偶尔会有异常值.
通常理解这是Java应用程序的典型行为.但是,从业务角度来看,告诉客户他们必须等待JVM"热身"才能看到他们所要求的性能是不可接受的.在处理第一个客户消息之前,应用程序需要"预热"
JVM是Sun 1.6.0 update 4.
克服这个问题的想法:
注意:显然,对于这个解决方案,我正在考虑所有因素,包括芯片拱,磁盘类型和配置以及操作系统设置.但是,对于这个问题,我想集中讨论如何优化Java应用程序并最大限度地减少"预热"时间.
Can you destructure a function parameter but still have the original available for use? The way I'm doing it now is just using a let
form inside the function body, but I wondering if there was a terser way of doing it.
在vimscript中,call
和之间有什么区别execute
?在什么情况下/用例我应该使用哪一个?
(免责声明,我知道vim中提供了广泛的在线帮助 - 我正在寻求对这个具体问题的简明回答).
一个快速的谷歌搜索产生至少一个为node.js 编写C++"Hello World"的教程,但目前还不清楚是否可以仅使用C编写这样的扩展.假设它有可能,我将面临哪些挑战/限制?
我尝试使用Intellij 远程调试liquibase项目的maven插件.问题是IDEA突出了错误的源代码行,我无法理解为什么.我尝试调试的源代码不受影响.我从我在Intellij中使用的源代码中手动构建并安装了我的本地maven存储库中的插件.我的Intellij版本11.1.3
和maven版本3.0.4
在Ubuntu 12.04上运行.
为了调试maven插件,我使用了mvnDebug
comand.如果有人对什么是错误有任何想法,请给我一些建议.如果您需要更多信息,请询问.我不习惯远程调试(实际上这是我第二次这样做)所以我可能会删除你需要的一些信息.
我正在使用lein2.我想在repl启动时默认加载一些ns.是否可以在project.clj中指定应该加载的ns,何时为该项目执行lein2 repl?
我支持使用平面文件(纯文本)进行持久化的旧Java应用程序.由于应用程序的性质,这些文件的大小可以达到每天100s MB,并且应用程序性能的限制因素通常是文件IO.目前,该应用程序使用普通的'java.io.FileOutputStream将数据写入磁盘.
最近,我们有几个开发人员声称使用内存映射文件,在本机代码(C/C++)中实现并通过JNI访问,将提供更高的性能.但是,FileOutputStream已经为其核心方法使用本机方法(即write(byte [])),因此在没有硬数据或至少是轶事证据的情况下,它看起来很脆弱.
我有几个问题:
这种断言真的如此吗? 与Java的FileOutputStream相比,内存映射文件是否总能提供更快的IO?
从FileChannel访问的MappedByteBuffer类是否提供与通过JNI访问的本机内存映射文件库相同的功能?什么是MappedByteBuffer缺乏可能导致您使用JNI解决方案?
在生产应用程序中将内存映射文件用于磁盘IO有哪些风险?也就是说,具有连续正常运行时间且重启次数最少的应用程序(每月一次,最多).来自生产应用程序(Java或其他)的真实轶事是首选.
问题#3是很重要的-我可以回答这个问题,我自己部分通过写一个"玩具"的应用程序,使用逆足IO上述各种选项,测试,但通过张贴到,所以我希望能为现实世界的趣闻轶事/数据来啃.
[编辑]澄清 - 每天操作,应用程序创建多个文件,大小从100MB到1Gig.总的来说,应用程序可能每天写出多个数据.