架构学习之路(六)-- golang String Interning

栏目: Java · 发布时间: 7年前

内容简介:今天在用golang做数据处理的时候出现了点问题,场景是这样的。服务端定时去请求远端服务器拉取每日数据,数据量不是很大,在百万级左右。拉取到的数据再经过简单数据校验和处理之后存入数据库。结果在执行这段代码的时候占用了将近3个G的内存。

今天在用golang做数据处理的时候出现了点问题,场景是这样的。

服务端定时去请求远端服务器拉取每日数据,数据量不是很大,在百万级左右。

拉取到的数据再经过简单数据校验和处理之后存入数据库。结果在执行这段代码的时候占用了将近3个G的内存。

在优化代码的时候发现了一个问题就是golang在处理大量string类型的时候并没有Interning,而在操作DB时又经常性的出现重复数据,导致内存没必要的浪费。

string interning(字符串驻留)的概念其实在 java 里会有接触,可以理解为一个常量池,在新建string的时候会查找有没有相同的unicode,有就把指针指过去。wiki原文中也写到了,在java中interning是一个默认的模式。

for example [String.intern()] in Java. All compile-time constant strings in Java are automatically interned using this method. -- https://en.wikipedia.org/wiki/String_interning

这两天我研究一下这个包,把优化结果及string包的源码分析整理一下

https://godoc.org/github.com/chriso/go-intern

https://en.wikipedia.org/wiki/String_interning

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Beginning Google Maps API 3

Beginning Google Maps API 3

Gabriel Svennerberg / Apress / 2010-07-27 / $39.99

This book is about the next generation of the Google Maps API. It will provide the reader with the skills and knowledge necessary to incorporate Google Maps v3 on web pages in both desktop and mobile ......一起来看看 《Beginning Google Maps API 3》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具