我需要帮助理解GC相关的数字,我从如何获得jmap
并jstat
涉及到我传递到Java的设置.我在具有16GB内存的服务器上使用以下设置启动应用程序(solr):
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -Xms12144m -Xmx12144m -XX:NewRatio=4 -XX:SurvivorRatio=8 -XX:+UseCompressedOops
输出jmap
开始:
Concurrent Mark-Sweep GC Heap Configuration: MinHeapFreeRatio = 40 MaxHeapFreeRatio = 70 MaxHeapSize = 12733906944 (12144.0MB) NewSize = 2686976 (2.5625MB) MaxNewSize = 130809856 (124.75MB) OldSize = 5439488 (5.1875MB) NewRatio = 4 SurvivorRatio = 8 PermSize = 21757952 (20.75MB) MaxPermSize = 176160768 (168.0MB)
为什么NewSize
,MaxNewSize
,OldSize
,和PermSize
所有的这么小,当MaxHeapSize
大?不应该NewSize + OldSize = heap size
?整体堆大小不应该接近MaxHeapSize
?当为什么设置为4 时,为什么NewSize
只有一半? …
在现实生活中,如果我使用表单框架,我不可避免地会在某些时候与它进行斗争.
我对在网站中构建表单的最佳实践模式感兴趣.参考任何语言的实现都是一个奖励(我通常使用Python).我对向最终用户创建/显示表单的问题特别感兴趣.
这是我看待主题的方式.表单工作流的大多数部分都可以使用相对轻量级的组件来处理,我可以从框架中删除像formencode和formish."大多数部分"是指将提交的表单数据解码为合理的数据结构(例如,表单中的重复字段应该成为Python中的列表); 将值编组到我们想要的类型中(例如,"age"字段应该变成整数); 并验证这些值(例如"年龄不能为空").
我最终战斗的一点是制作和展示表格本身.许多框架(例如FormAlchemy)将他们的模式,验证和模型紧密地耦合到某种形式的小部件生成方案,这是我不喜欢的.
制作表格所涉及的任务是:
我看到的选项是:
有没有其他模式来处理这个问题?各自的优点和缺点是什么?
(蟒蛇)我已经看了/曾指出,该框架到目前为止是:平原,formencode,FormAlchemy,formish,WTForms,Django的形式,web2py中,变形,FormConvert和web.py
更新:我回答关于构建表单的最佳实践的问题并不是很远,但我已经决定使用我当前的项目来进行变形/漏勺,这是处理序列化等的理智方式,但是更重要的是有充分的文件证明和经过充分测试.除了最简单的形式之外,我将尽量避免使用表单生成.
为措辞不佳的问题标题道歉 - 不知道如何把它变得更好!
在下面的代码中,当我执行时ruby bar.rb
,如何才能使其输出bar.rb
,而不是foo.rb
?
在foo.rb
:
module Foo
def filename
__FILE__
end
end
Run Code Online (Sandbox Code Playgroud)
在bar.rb
:
require_relative 'foo'
include Foo
puts filename # outputs 'foo.rb'
Run Code Online (Sandbox Code Playgroud)
这是一个库函数,每次执行一些代码时,都会记录该代码的位置(和git ref).