首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏左手java右手go

    修改golang源代码实现无竞争版ThreadLocal

    = 4 5 HeapAlloc = 31556568 NumGoroutine = 4 38 HeapAlloc = 42043600 NumGoroutine = 4 21 HeapAlloc = 52529512 NumGoroutine = 5 6 HeapAlloc = 63015760 NumGoroutine = 4 7 HeapAlloc = 73500784 HeapAlloc = 178351296 NumGoroutine = 3 114 HeapAlloc = 178351296 NumGoroutine = 3 112 HeapAlloc NumGoroutine = 3 146 HeapAlloc = 178351296 NumGoroutine = 3 HeapAlloc = 188837736 NumGoroutine 可以看到 HeapAlloc 不是一直上升的,中间会有GC使其下降

    1.1K20发布于 2019-08-20
  • 来自专栏飞鸟的专栏

    Go-标准库-runtime(二)

    MiB\n", mem.Alloc/1024/1024)fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)fmt.Printf("HeapAlloc = %v MiB\n", mem.HeapAlloc/1024/1024)fmt.Printf("HeapSys = %v MiB\n", mem.HeapSys/1024/1024)data := MiB\n", mem.Alloc/1024/1024)fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)fmt.Printf("HeapAlloc = %v MiB\n", mem.HeapAlloc/1024/1024)fmt.Printf("HeapSys = %v MiB\n", mem.HeapSys/1024/1024)data = nilruntime.GC MiB\n", mem.Alloc/1024/1024)fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)fmt.Printf("HeapAlloc

    24820编辑于 2023-04-23
  • 深入 Go 语言垃圾回收:从原理到内建类型 Slice、Map 的陷阱以及为何需要 strings.Builder

    分配 100 个对象后: HeapAlloc = 1 MiB2. LeakingDequeue 执行后 (GC 前): HeapAlloc = 1 MiB3. 再次分配 100 个对象后: HeapAlloc = 100 MiB5. SafeDequeue 执行后 (GC 前): HeapAlloc = 100 MiB6. 分配 100 个对象后: HeapAlloc = 2 MiB2. LeakingDequeue 执行后 (GC 前): HeapAlloc = 2 MiB3. 再次分配 100 个对象后: HeapAlloc = 100 MiB5. SafeDequeue 执行后 (GC 前): HeapAlloc = 100 MiB6. 分配 100 个对象后: HeapAlloc = 0 MiB2. LeakingDequeue 执行后 (GC 前): HeapAlloc = 0 MiB3.

    17700编辑于 2025-07-07
  • 来自专栏liulun

    WinApi学习笔记-内存的复制,填充,输出等操作

    int main(void) {     HANDLE hHeap = GetProcessHeap();     LPVOID lpSrc;     LPVOID lpDis;     lpSrc = HeapAlloc (hHeap,0,MEM_BLOCK_SIZE);     lpDis = HeapAlloc(hHeap,0,MEM_BLOCK_SIZE);     cout<<"HeapAlloc分配但不清零"< <endl;     ShowMemContent(lpDis,MEM_BLOCK_SIZE);     ZeroMemory(lpDis,MEM_BLOCK_SIZE);     cout<<"HeapAlloc

    59530编辑于 2022-05-09
  • 来自专栏飞鸟的专栏

    Go-标准库-runtime(三)

    MiB\n", mem.Alloc/1024/1024)fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)fmt.Printf("HeapAlloc = %v MiB\n", mem.HeapAlloc/1024/1024)fmt.Printf("HeapSys = %v MiB\n", mem.HeapSys/1024/1024)for i := MiB\n", mem.Alloc/1024/1024)fmt.Printf("TotalAlloc = %v MiB\n", mem.TotalAlloc/1024/1024)fmt.Printf("HeapAlloc = %v MiB\n", mem.HeapAlloc/1024/1024)fmt.Printf("HeapSys = %v MiB\n", mem.HeapSys/1024/1024)}上面的代码先打印出内存分配前的内存信息

    22620编辑于 2023-04-23
  • 来自专栏潇湘信安

    Arsenal-kit免杀套件编译与测试

    -gt 0 ] ; then # exit 2 # fi } Artifact提供了5种绕过技术和3种内存分配方式,默认用的pipe和HeapAlloc,可修改artifactkit_technique 这里我们将默认的pipe和HeapAlloc改为mailslot和HeapAlloc,template是模板,过不了任何防病毒软件。 如果仍然无法免杀时可以尝试更改为其他选项,然后再重新编译试试。 . # Options are: HeapAlloc, VirtualAlloc, and MapViewOfFile artifactkit_allocator="HeapAlloc" 如果想往生成的 0x04 免杀测试 1、Defender(HeapAlloc + mailslot) 2、360(VirtualAlloc+ mailslot) 3、火绒(MapViewOfFile+ peek) 0x05  文末小结 经过以上测试最终选择用HeapAlloc + mailslot组合替代原生Artifact Kit,因为360和WDF只查杀Stager,而Stageless可同时过360+WDF+火绒的静态查杀

    2K10编辑于 2024-04-24
  • 来自专栏MasiMaro 的技术博文

    windows 堆管理

    堆内存管理的函数主要有HeapCreate、HeapAlloc、HeapFree、HeapRealloc、HeapDestroy、HeapWalk、HeapLock、HeapUnLock。 堆内存的分配与释放 堆内存的分配主要用到函数HeapAlloc,下面是这个函数的原型: LPVOID HeapAlloc( HANDLE hHeap, //堆句柄,表示在哪个堆上分配内存 DWORD time(NULL)); HANDLE hHeap = GetProcessHeap(); int nCount = 1000; float *pfArray = (float *)HeapAlloc ); //在自定义堆中分配内存 hHeap = HeapCreate(HEAP_GENERATE_EXCEPTIONS, 0, 0); pfArray = (float *)HeapAlloc

    1.3K10发布于 2019-02-25
  • 来自专栏k-cloud-labs

    Golang监控

    . // // This is the same as HeapAlloc (see below). . // // TotalAlloc increases as heap objects are allocated, but // unlike Alloc and HeapAlloc Specifically, HeapAlloc increases as heap // objects are allocated and decreases as the heap is swept HeapAlloc uint64 // HeapSys is bytes of heap memory obtained from the OS. // // HeapSys measures HeapReleased uint64 // HeapObjects is the number of allocated heap objects. // // Like HeapAlloc

    72330编辑于 2023-03-06
  • 来自专栏米扑专栏

    globalalloc、malloc和new的区别

    但,32位WINDOWS系统中,应使用新的内存分配函数HeapAlloc()以得到更好的支持,GlobalAlloc()还可以用,主要是为了兼容。 HeapAlloc apply memory from kernel32.dll    GlobalAlloc obsolete malloc   apply memory form C runtime CoMemAlloc apply memory from kernel32.dll all are heap memory. recommend HeapAlloc for big block memory allocation  recommend stack memory space. recommend HeapAlloc for big block memory allocation  recommend

    1.9K20发布于 2019-02-19
  • 来自专栏jiajia_deng

    重载 new、delete 检测内存泄露

    实现代码 #include <tchar.h> #include <windows.h> #include <strsafe.h> #define H_ALLOC(sz) HeapAlloc (GetProcessHeap(),0,sz) #define H_CALLOC(sz) HeapAlloc(GetProcessHeap(),HEAP_ZERO_MEMORY,sz) #define HeapFragValue ,sizeof(HeapFragValue) ) ; } //申请块信息数组 g_pMemBlockList = (PST_BLOCK_INFO)HeapAlloc

    61140编辑于 2023-10-21
  • 来自专栏jiajia_deng

    Windows 堆内存管理

    int main() { // 使用系统给每个进程提供的默认堆 HANDLE hHeap = GetProcessHeap(); float* fArray = (float*)HeapAlloc fArray); // 创建一个私有堆 hHeap = HeapCreate(HEAP_GENERATE_EXCEPTIONS, 0, 0); fArray = (float*)HeapAlloc

    72010编辑于 2023-10-21
  • 来自专栏信安之路

    通过POC来学习漏洞的原理

    Authorization 这些字段的值,据我的开发经验 c/c++ 对堆使用的函数 (1)一个是 malloc() ,动态分配,涉及到堆的分配 (2)一个是 HeapCreate() ,创建一个堆,紧接着用 HeapAlloc 我接着陷入了沉思: HeapCreate() 返回的句柄会不会是一个全局变量,而且在我附加到进程之前就已经进行初始化了,所以才没有断下来,那么我在 HeapAlloc() 下断不就可以了吗? 接着我把目标转向了 HeapAlloc()。 这里要注意一下在 OD 直接对 HeapAlloc() 下断是不行的,因为 kernel32.dll 中的 HeapAlloc() 函数执行时紧接着会调用 ntdll.dll 中的 RtlAllocateHeap

    97400发布于 2018-08-08
  • 来自专栏Golang语言社区

    Go 语言内存管理(二):Go 内存管理

    runtime.MemStats 部分注释 1type MemStats struct { 2 // heap 分配出去的字节总数,和 HeapAlloc 值相同 3 是分配出去的堆对象总和大小,单位字节 21 // object 的声明周期是 待分配 -> 分配使用 -> 待回收 -> 待分配 22 // 只要不是待分配的状态,都会加到 HeapAlloc HeapInuse 是处在使用中的所有 span 中的总字节数 38 // 只要一个 span 中有至少一个对象,那么就表示它被使用了 39 // HeapInuse - HeapAlloc uint64 48 49 // NextGC is the target heap size of the next GC cycle. 50 // NextGC 表示当 HeapAlloc 增长到这个值时,会执行一次 GC 51 // 垃圾回收的目标是保持 HeapAlloc ≤ NextGC,每次 GC 结束 52 // 下次 GC 的目标,是根据当前可达数据和

    8.2K105发布于 2019-05-08
  • 来自专栏MasiMaro 的技术博文

    windows 下文件的高级操作

    printf("create file error\n"); return GetLastError(); } char* pMem = (char*)HeapAlloc sizeof(ST_EXT_OVERLAPPED)); pExOl->m_dwLen = dwLen * sizeof(TCHAR); pExOl->m_pData = HeapAlloc error\n"); return GetLastError(); } ST_EXT_OVERLAPPED* pExOl = (ST_EXT_OVERLAPPED*)HeapAlloc error\n"); return GetLastError(); } ST_EXT_OVERLAPPED* pExOl = (ST_EXT_OVERLAPPED*)HeapAlloc < 2 * si.dwNumberOfProcessors; i++) { ST_EXT_OVERLAPPED* pExitMsg = (ST_EXT_OVERLAPPED*)HeapAlloc

    2.4K30发布于 2018-08-31
  • 来自专栏jiajia_deng

    AWE 内存管理

    PFNArraySize = NumberOfPages * sizeof(ULONG_PTR); //2 准备物理页面的页表数组数据 aPFNs1 = (ULONG_PTR *)HeapAlloc (GetProcessHeap(), 0, PFNArraySize); aPFNs2 = (ULONG_PTR *)HeapAlloc(GetProcessHeap(), 0, PFNArraySize

    50820编辑于 2023-10-21
  • 来自专栏腾讯移动品质中心TMQ的专栏

    win32应用程序性能测试-内存篇

    kernel上的函数,就是操作kernel上的page,需要先拷贝一份,这样不会影响其它进程使用kernel上的函数,这个操作就会发生一次copy on write错误 内存的分配API 1)利用 HeapAlloc 缺点:无法准确捕获这个时刻 方法二、看图,应该在1个半小时能出现,一直trace这个过程的VirtualAlloc和heapAlloc。 因xperf开启heapalloc 消耗太大,只能针对指定进程进行trace 2)复现过程: 安装同样的版本,发现本地也会出现VM从32M最后涨到50M的情况。 1024 -MinBuffers 128 -MaxBuffers 128 -stackwalkHeapAlloc+HeapRealloc 注:第二条是开启heapsession来trace 指定进程的heapalloc

    2K81发布于 2018-02-08
  • 来自专栏MasiMaro 的技术博文

    WinSock Socket 池

    AF_INET, SOCK_STREAM, IPPROTO_IP); LPCLIENT_OVERLAPPED *pOverlappedArray = (LPCLIENT_OVERLAPPED *)HeapAlloc HEAP_ZERO_MEMORY, sizeof(LPCLIENT_OVERLAPPED) * MAX_CONNECT_SOCKET); SOCKET *pSocketsArray = (SOCKET *)HeapAlloc sockAddr.sin_port = htons(g_nPorts); LPCLIENT_OVERLAPPED lpoc = (LPCLIENT_OVERLAPPED)HeapAlloc = AF_INET; sockAddr.sin_port = htons(g_nPorts); lpoc->pBuf = (char*)HeapAlloc 16); lpoc->lNetworkEvents = FD_ACCEPT; lpoc->pBuf = (char*)HeapAlloc

    1.4K10发布于 2018-08-31
  • 来自专栏LinkinStar's Blog

    Golang 监控全局变量

    TotalAlloc": 188992, "Sys": 70453248, "Lookups": 0, "Mallocs": 818, "Frees": 21, "HeapAlloc 就可以用命令通过之前的接口来监控内存等使用情况咯 jplot --url http://127.0.0.1:8080/debug/vars \ memstats.HeapSys+memstats.HeapAlloc

    69220编辑于 2022-09-01
  • 来自专栏jiajia_deng

    AWE 内存管理

    PFNArraySize = NumberOfPages * sizeof(ULONG_PTR); //2 准备物理页面的页表数组数据 aPFNs1 = (ULONG_PTR *)HeapAlloc (GetProcessHeap(), 0, PFNArraySize); aPFNs2 = (ULONG_PTR *)HeapAlloc(GetProcessHeap(), 0, PFNArraySize

    46820编辑于 2023-10-21
  • 来自专栏白帽子安全笔记

    解决之前2个项目不免杀的问题

    #选项有:mailslot、peek、pipe、readfile、readfile-v2、template artifactkit_technique="mailslot" #分配内存选项有:HeapAlloc

    27110编辑于 2024-10-28
领券