
正文
优化java代码运行内存 java优化内存占用
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于JAVA程序内存被大量占用问题?
问题三:内存溢出错误怎么解决 你好,内存溢出可能是病毒作怪,也有可能是程序错误. 内存溢出是指系统内存全部被占用,没有可用内存分配给新启动的任务的情况,通常不会导致系统崩溃。
如果系统中没有使用缓存,和大对象内存过高,那就考虑是否有内存泄漏。可以使用jmap等jVM调优工具进行对象分析。然后定位过高原因修改代码。
如果是对象或是字符串那么重复的创建很容易造成内存的大量被占用,如果是基本类型那么并不会造成太多的影响。
Java中的内存溢出大都是因为栈中的变量太多了。其实内存有的是。建议不用的尽量设成null以便回收,多用局部变量,少用成员变量。1),变量所包含的对象体积较大,占用内存较多。2),变量所包含的对象生命周期较长。
相关问答
Q1: java进行内存占用比Xms参数设置的要小,这是怎么回事
就是Xmx减去已经用了的内存再减去本次须要的内存。 如果不够就会触发OLD GC。哎,越解释越多。你就记着这个值就是建议内存最大使用值。
明白现在内存有多大,可以通过工具看,和使用的内存比例。如果项目中需要缓存很多缓存,可以理解使用是合理的。如果服务器内存够大,应用可以适当调整XMX xms参数进行JVM调整。
Xms是用它来设置程序初始化的时候内存栈的大小,增加这个值的话你的程序的启动性能会得到提高。所以根据程序的大小,还有电脑的实际配置,来进行这两个的参数配置即可,参数的单位都是m(兆)。
ide一般run时可设置内存大小,如eclipse设置如下 eclipse安装后,在安装目录有个config.ini文件,内容如下:-vmargs -Xms40m -Xmx256m 或是 其实也很简单。
你能控制的部分只有堆大小:-Xmx,类占用的内存:-XX:MaxPermSize,还有线程栈:-Xss控制每 个线程占用的内存。注意当把栈大小设置的太小时会导致StackOverflow异常、程序出错。
Q2: 怎样释放JAVA程序运行中所用的内存
1、cc=null;就可以了。java 虚拟机会自己调用gc()方法去释放内存。显示的调用System.gc()或Runtime.getRuntime().gc()也是可以的。调用了gc()并不会强制释放内存,虚拟机会尽最大努力从所有丢弃的对象中回收了空间。
2、内存不足说明你的代码有问题,你得自己将需要大块内存占用的代码分解成即时使用即时处理,这也是为啥读文件在java大多使用流,而不是让你把整个文件读入。
3、引用变量是普通变量,定义时在栈中分配内存,引用变量在程序运行到作用域外释放。
4、Java中的内存都是自动回收的,不需要你显式的去调用释放。 如果非要这么做,你可以用JDK下的程序 jconsole连接到Java虚拟机,然后执行GC操作。另外,用的越久,占用内存越多,还应该是代码的问题。
5、java当中数组是不需要手动释放的,底层有自动回收垃圾的机制,扩展如下:前一次循环结果如果没有被引用,那么会等待被自动释放,如果被引用,则不释放。
6、与C语言相比,垃圾回收器是JAVA的一大优势。其功能在于自动释放违背占用的内存,但何时去释放有其自身的算法,不支持使用者直接释放内存。
关于优化java代码运行内存和java优化内存占用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







