在2016年的“ at CppCon”中,他提到了Facebook上一个隐秘的错误,其中一个字节被从未初始化的(未写到)页面中读取了两次,以至于第二次读取返回的(非零)值与第一次读取的值(零)不同。他提到他们使用jemalloc,以及在Linux上运行的。说它总是喜欢mmap()而不是sbrk()。这意味着当分配页面时,页面是。我的问题是:第二次读取怎么可能返回一个非零值,从而导致它们的错误?
尝试创建一个没有所有内存数据转储的小型核心转储文件。这个似乎有一个很好的解决方案。但是,当我将掩码设置为0(以排除所有内存数据)时,就没有核心文件。如果我将掩码设置为0x33,则生成核心文件。知道为什么吗?#include <execinfo.h>#include <stdlib.h>
int *foo = (int*)-1; // make a bad pointer
prin
最近我注意到,在Linux发行版中,我们有巨大的页面内存,可以设置为 all ,允许系统始终使用巨大的页面,建议让应用程序决定是否要使用巨大的页面,或者从不使用。
这种能力有时会降低应用程序的性能。如果此值小于LargePageHeapSizeThreshold:,则MaxHeapSize JVM使用大页面大小。我的问题是,将LargePageHeapSizeThreshold设置为小于MaxHeapSize激活巨大页面的值,即使UseTransparentHugePages=false