当前位置:首页 > 内存 > 正文

java消耗内存(java内存结构)

  • 内存
  • 2024-09-05 14:17:26
  • 2795

一、学习java的话电脑要多高的配置?很吃内存条吗?配置不需要很高,正常编程就需要内存,因为大多数人都是用IDE来开发,而不是记事本,你写的程序越大,运行它需要的内存就越多。例如,要建立一个网站,在测试时,需要架设一个HTTP服务器。简单的配置就可以
CPU:i3、i5、AMD等,不必太好
内存:2G、4G。如今,4G已普遍使用。2G以后就不行了,刚学就行了,内存太低了,不用理它,以后就能跑了。
硬盘:可选,一般500G就够了。今天你买的基本都是1T。
其他硬件不需要过多强调,很简单就OK了。
看到有网友回复:一般来说8-16G就足够了,不需要太多内存。说实话我完全没看懂还在胡说八道,8-16G内存?什么概念?服务器小?个人发展的高级配置与谁无关。有这么好笑吗?


二、java死循环消耗的哪里的内存Java无限循环会消耗CPU内存。使用Java的available函数时,网络流没有数据的时候会造成死循环,导致CPU占用率达到50%。


三、Java编程时如何节省内存,效率高
很多人说“Java完蛋了,等死吧!”,为什么最简单的例子就是Java构建的系统占用大量内存听到这,很多人都会起起Java来引用一堆性能测试报告来证明这一点。事实上,理论上,用Java构建的系统并不比用其他语言开发的系统占用更多的内存。那么为什么有这么多的理由来证明它占用了内存呢。
1.不要使用newBool​​ean()。
很多场景都需要布尔类型。例如,JDBC中Boolean类型的set和get都是通过Boolean封装发送的,是一个引用Fragment:
lean("isClosed",newBool​​ean(true));
lean("isClosed",newBool​​ean(isClosed));
lean("isClosed",newBool​​ean(i==3));
通常这些系统中构造的Boolean实例数量相当大,因此系统中充满了大量小型布尔实例对象,占用相当多的内存。布尔类实际上只需要两个实例,一个true实例和一个false实例。
Boolean类提供了两个静态变量:
下面是参考片段:
publicstaticfinalBooleanTRUE=newBool​​ean(true);
publicstaticfinalBooleanFALSE=newBool​​ean(false);
因为valueOf的内部实现是:return(b?TRUE:FALSE);
这样可以节省大量内存。我相信,如果Java规范直接指定boolean构造函数为private,这种情况就不会再发生了。
2。不要使用newInteger。
和Boolean一样,在Java开发中也有很多场合使用Integer来封装int,而int典型代表的值通常都很小。SUNSDK中对Integer实例进行了优化。Integer类缓存了从-128到127的256个Integer状态。如果使用f(inti)并且传递的int范围在此范围内,将返回一个静态实例。这样,如果我们使用f代替newInteger,内存占用将会大大减少。如果您的系统将在不同的SDK(例如IBMSDK)中使用,您可以创建自己的实用程序类包装器,例如f(),以便您可以在任何SDK中使用此函数。
3。使用StringBuffer代替字符串加法。
这个我就不多说了,因为已经说了N遍了。我只是想讲一个不是笑话的笑话,将SQL语句放在一起实际上构建了近100个字符串实例中的大部分。无语!
4。哈希表的过度使用
有一定开发经验的开发人员经常会使用哈希表(JDK中哈希表的一种实现是HashMap)来缓存一些数据,从而提高系统的性能。例如,使用HashMap来缓存一些诸如物资信息、人员信息等基础数据,不仅提高了系统速度,同时也增加了系统的内存占用,特别是当缓存数据较多时。其实我们可以利用操作系统中缓存的概念来解决这个问题,即为缓存的对象分配一定大小的缓存容器,并按照一定的条件淘汰掉不需要缓存的对象。算法。这会导致对象被缓存。缓存还提高了系统的运行效率,因为缓存容器不会无限扩展。开源的缓存实现项目有很多,比如ehcache、oscache等,它们都实现了常见的缓存算法,比如FIFO、MRU。
5避免太深的类层次结构和太深的方法调用。
因为两者都占用大量内存(特别是方法调用是堆栈空间的大消耗者)。
6。变量仅在使用时才被定义和实例化。
7尽量避免使用静态变量。类中的私有常量可以用final代替。
8。对经常使用的对象使用对象池技术
9.确保连接及时关闭
四、如何降低java程序的内存占用?您可以通过以下方式减少Java程序的内存占用:

1.分析程序并修复内存泄漏。
2。选择合适的数据结构以减少内存使用。
3。调整JVM的内存参数,限制Java进程的内存使用。
4。不正确的缓存也会导致内存使用过多。