首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >操纵内存占用

操纵内存占用
EN

Stack Overflow用户
提问于 2012-10-26 18:05:11
回答 2查看 42关注 0票数 0

在我的程序中,我随机地生成一些标识符来标识一些字符。示例:

代码语言:javascript
运行
复制
12555678 to identify 'a'
12 to identify 'g'
13456789900000076 to identify 'c'
...

在我的算法中,我无法知道这些标识的大小。所以,我使用BigInteger数。我想减少内存,那么当我生成一个标识符12时,如果我可以使用另一个类型(不是BigInteger),我可以在内存中获胜。所以我的问题是,有没有可能使用另一种类型来操作内存,并且只租用我的标识符的确切大小?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2012-10-26 18:09:31

BigInteger的大小与表示该数字所需的大小一样大(加上一些开销)

如果你可以用Long代替,它会更小(因为它有更少的开销),使用小于Long的类型不会有太大的区别,因为开销是相同的。

如果您可以使用64位有符号值,那么使用long比使用Long要小5倍,所以如果内存很重要,我会找到一种方法将自己限制在18万亿个标识符。

票数 5
EN

Stack Overflow用户

发布于 2012-10-26 18:09:07

您可以将字段声明为Number类型,这将允许BigIntegers以及Integers甚至Shorts。

根据您打算对值调用的方法,您可能需要专门检查BigInteger的情况,并向下强制转换以单独处理它。其他的一切都可以通过number.longValue()来处理。

这样做意味着您的引用能够在需要时保留BigInteger,但您可以在值允许的情况下传入Short以节省内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13084827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档