avatar
java内存泄露问题# Java - 爪哇娇娃
q*s
1
今天去面试,
被问到java的内存泄露问题,
结果不知道如何回答。
java有内存泄露么?在什么情况下发生,如何检测和解决!
avatar
B*h
2
有。如:
object A已经out of scope了,但是之前被放入一个collection或者map里。如果colle
ction和map是static,那么就算enclosing object被GC了,A还不会被GC.
当然Java并没有严格意义上的memory leak.
用SDK里的JConsole就能检测内存使用情况。如果需要更强的功能,要找个好点的memor
y profiler,如optimizeit.

【在 q***s 的大作中提到】
: 今天去面试,
: 被问到java的内存泄露问题,
: 结果不知道如何回答。
: java有内存泄露么?在什么情况下发生,如何检测和解决!

avatar
q*s
3
谢谢!长见识了!
是不是在程序退出之后还不能回收了?
我想应该是可以回收了吧?

colle
memor

【在 B*********h 的大作中提到】
: 有。如:
: object A已经out of scope了,但是之前被放入一个collection或者map里。如果colle
: ction和map是static,那么就算enclosing object被GC了,A还不会被GC.
: 当然Java并没有严格意义上的memory leak.
: 用SDK里的JConsole就能检测内存使用情况。如果需要更强的功能,要找个好点的memor
: y profiler,如optimizeit.

avatar
w*r
4
JVM died and everything is gone.....

【在 q***s 的大作中提到】
: 谢谢!长见识了!
: 是不是在程序退出之后还不能回收了?
: 我想应该是可以回收了吧?
:
: colle
: memor

avatar
a*e
5
as you wish

【在 w*r 的大作中提到】
: JVM died and everything is gone.....
avatar
w*r
6
well, theoratically, if JVM got killed, all memory claimed by JVM should be
reclaimed by OS, right? It is just a matter how can you be sure the JVM exit
gracefully. Correct me if I were wrong, to my understanding, once outofmem
exception occured, it would be quite unlikely to have JVM exit gracefully by
simply calling system.exit(), best way to do it is kill-9

【在 a**e 的大作中提到】
: as you wish
avatar
q*s
7
我的问题是
如果我在一个类里定义了一个static的reference
指向collection或者map,现在我运行的程序退出了,
难道collection或map中的element还不能被回收。
JVM die是什么意思?

colle
memor

【在 B*********h 的大作中提到】
: 有。如:
: object A已经out of scope了,但是之前被放入一个collection或者map里。如果colle
: ction和map是static,那么就算enclosing object被GC了,A还不会被GC.
: 当然Java并没有严格意义上的memory leak.
: 用SDK里的JConsole就能检测内存使用情况。如果需要更强的功能,要找个好点的memor
: y profiler,如optimizeit.

avatar
B*h
8
ft,当然回收了

【在 q***s 的大作中提到】
: 我的问题是
: 如果我在一个类里定义了一个static的reference
: 指向collection或者map,现在我运行的程序退出了,
: 难道collection或map中的element还不能被回收。
: JVM die是什么意思?
:
: colle
: memor

avatar
m*t
9

colle
memor
Yes, Java do have memory leak issue. GC can only claim java objects in the
heap. If the object is created by native code, it will not be garbage
collected. That's why you always need to close the database connection,
statements, or legacy system connector in finally block.

【在 B*********h 的大作中提到】
: 有。如:
: object A已经out of scope了,但是之前被放入一个collection或者map里。如果colle
: ction和map是static,那么就算enclosing object被GC了,A还不会被GC.
: 当然Java并没有严格意义上的memory leak.
: 用SDK里的JConsole就能检测内存使用情况。如果需要更强的功能,要找个好点的memor
: y profiler,如optimizeit.

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。