当前位置:首页 » 编程语言 » java耗内存

java耗内存

发布时间: 2022-05-05 14:27:19

java 流占内存吗

占内存啊
,流是个抽象的概念,是对
输入输出设备
的抽象,
Java程序
中,对于数据的输入/输出操作都是以“流”的方式进行。设备可以是文件,网络,内存等。
stream还有很多种,
具体的你可以看看相关的资料

㈡ 如何计算一个Java程序运行占用多少内存

可以用 system(命令) 调用 DOS/Windows 命令 获取 正在使用多少 内存 (memory).
命令例子:
wmic process where name="cmd.exe" get WorkingSetSize
这里 "cmd.exe" 你可替换成 你的程序 名字。
你也可以用你的程序 进程 PID 号数 调用, 命令是:
wmic process where processid=6884 get WorkingSetSize
这里6884你可替换成 你的程序 进程 PID。
输出有2行,第二行是占用内存字节数:
WorkingSetSize
4616192
c/c++ 语言 :
system("wmic process where processid=6884 get WorkingSetSize");
system("wmic process where name=\"cmd.exe\" get WorkingSetSize");
用程序名调用时,若有多个同名程序在运行,输出的 内存数 将分行输出出来。

㈢ Java编程时如何节省内存,效率高

从理论上来讲Java做的系统并不比其他语言开发出来的系统更占用内存,那么为什么却有这么多理由来证明它确实占内存呢?两个字,陋习。
1、别用new Boolean()。
在很多场景中Boolean类型是必须的,比如JDBC中boolean类型的set与get都是通过Boolean封装传递的,大部分ORM也是用Boolean来封装boolean类型的,比如:
以下是引用片段:
ps.setBoolean(“isClosed”,new Boolean(true));
ps.setBoolean(“isClosed”,new Boolean(isClosed));
ps.setBoolean(“isClosed”,new Boolean(i==3));
通常这些系统中构造的Boolean实例的个数是相当多的,所以系统中充满了大量Boolean实例小对象,这是相当消耗内存的。Boolean类实际上只要两个实例就够了,一个true的实例,一个false的实例。
Boolean类提供两了个静态变量:
以下是引用片段:
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
因为valueOf的内部实现是:return (b ? TRUE : FALSE);
所以可以节省大量内存。相信如果Java规范直接把Boolean的构造函数规定成private,就再也不会出现这种情况了。
2、别用new Integer。
和Boolean类似,java开发中使用Integer封装int的场合也非常 多,并且通常用int表示的数值通常都非常小。SUN SDK中对Integer的实例化进行了优化,Integer类缓存了-128到127这256个状态的Integer,如果使用 Integer.valueOf(int i),传入的int范围正好在此内,就返回静态实例。这样如果我们使用Integer.valueOf代替new Integer的话也将大大降低内存的占用。如果您的系统要在不同的SDK(比如IBM SDK)中使用的话,那么可以自己做了工具类封装一下,比如IntegerUtils.valueOf(),这样就可以在任何SDK中都可以使用这种特性。
3、用StringBuffer代替字符串相加。
这个我就不多讲了,因为已经被 人讲过N次了。我只想将一个不是笑话的笑话,我在看国内某“着名”java开发的WEB系统的源码中,竟然发现其中大量的使用字符串相加,一个拼装SQL 语句的方法中竟然最多构造了将近100个string实例。无语中!
4、过滥使用哈希表
有一定开发经验的开发人员经常会使用hash表(hash 表在JDK中的一个实现就是HashMap)来缓存一些数据,从而提高系统的运行速度。比如使用HashMap缓存一些物料信息、人员信息等基础资料,这 在提高系统速度的同时也加大了系统的内存占用,特别是当缓存的资料比较多的时候。其实我们可以使用操作系统中的缓存的概念来解决这个问题,也就是给被缓存的分配一个一定大小的缓存容器,按照一定的算法淘汰不需要继续缓存的对象,这样一方面会因为进行了对象缓存而提高了系统的运行效率,同时由于缓存容器不是无限制扩大,从而也减少了系统的内存占用。现在有很多开源的缓存实现项目,比如ehcache、oscache等,这些项目都实现了FIFO、MRU等常见的缓存算法。
5、避免过深的类层次结构和过深的方法调用。
因为这两者都是非常占用内存的(特别是方法调用更是堆栈空间的消耗大户)。
6、变量只有在用到它的时候才定义和实例化。
7、尽量避免使用static变量,类内私有常量可以用final来代替。
8、对频繁使用的对象采用对象池技术
9、保证每个IO操作,connection及时关闭

㈣ 如何计算Java对象所占内存的大小

java中可以用.getBytes().length获取字符串占用内容的大小,原理是java中任何字符都采用Unicode编码,所以衡量占用内存大小采用占用的字节数。
举例如下:
public
class
TestStringSize
{
public
static
final
void
main(String[]
args)
{
System.out.println("占用内存大小:"+"学java".getBytes().length);
}
}
输出结果:
占用内存大小:6
byte

㈤ 一个Java对象到底占用多大内存

Object o=new Object():
在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.
举个例子:
Class O{
int i;
byte j;
String s;
}
其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.
当然,如果类里有其他对象的话,也要把其他对象的空间算进去

㈥ 问,为什么我的java程序运行这么耗内存

1、Java中有自回收垃圾机制GC2、有些连接比如数据库、IO流等要进行手动.close()方法进行关闭,达到内存操作其中:垃圾回收机制GC其实就是设置一个根节点,然后在这个程序中,判断变量或者对象是否还属于这个根节点,如果不属于了

㈦ java 进程消耗内存只增不减

问题出现在“需要重复进行的操作”这个上面!
首先要清楚,java中的内存分两种,一个是堆内存,一个是栈内存!内存泄露到底在哪个区间中泄露了呢,看你“需要重复进行的操作”这里面的代码怎么写了!如果这里面在不断的对变量进行操作的话,内存泄露是肯定的,因为要释放栈内存必须等该方法结束才会释放其变量!很明显,你这个方法永远不会结束!至于“jvm的初始化造成这样的结果”不会的!jvm的初始化只是把字节码加载进内存里而已!不会造成这样的结果!
呵呵,希望对你有帮助!

㈧ Java程序用很多集合类,会不会很耗内存

对于一些集合类,为了维持其集合结构,会需要产生一些中间对象。不过这些中间对象的个数是跟你的集合中元素对象个数成正比。如果集合中元素的结构比较简单,个数较少,可能维持集合结构所创建的中间对象所耗内存比你的集合中元素所耗的内存还大;如果集合中元素的结构比较复杂,个数很大,相比之下,中间对象所耗内存基本可以忽略。这就得看你具体的应用考虑。

㈨ java应用比较占内存是为什么

因为 Java 运行在虚拟机上,虚拟机本身就占用的内存,因此 Java 程序本身加虚拟机内存导致 Java 比较占内存。
相同的 Java 程序和 C 程序之间,Java 可能会比 C 占用更大的内存。但是在编写 Java 程序的时候程序员不需要过多的将心思放在内存管理上,而编写 C 程序则要小心避免发生内存泄漏。因此,从某种意义上来说,编写 Java 程序可能更加节省内存,除非你的 C 功底比较扎实。

热点内容
安卓如何下载lv手游 发布:2025-05-14 10:35:45 浏览:383
pythondict添加key 发布:2025-05-14 10:33:59 浏览:382
柱子箍筋加密区长度 发布:2025-05-14 10:18:29 浏览:352
云服务器和内网穿透哪个好 发布:2025-05-14 10:16:41 浏览:627
安徽新能源网络配置是什么 发布:2025-05-14 10:06:24 浏览:631
pinode搭建服务器 发布:2025-05-14 10:04:23 浏览:4
电脑服务器ip名称 发布:2025-05-14 10:01:09 浏览:749
connectorpython 发布:2025-05-14 09:48:50 浏览:763
配置不好怎么办 发布:2025-05-14 09:46:40 浏览:623
数据流程图中的数据存储是指 发布:2025-05-14 09:46:39 浏览:446