【发布时间】:2012-03-12 20:26:42
【问题描述】:
在我的应用程序中,我使用不受信任的代码运行了一些线程,因此我必须防止内存溢出。我有一个看门狗,它分析当前线程的时间(线程是串行调用的)。
但是我如何确定内存使用情况?
我只知道Runtime.totalMemory()的整个VM的内存使用情况?
如果有可能找出线程的使用情况,或者单个进程的使用情况,那就太好了。通过进程的内存使用情况,我无论如何都可以计算线程的使用情况。
【问题讨论】:
-
根据定义,一个线程与进程中的其他线程共享相同的内存空间。你的问题没有多大意义。 JVM = 进程。 1 个进程有很多线程。
-
JVM = 进程,也就是说每个java进程都有自己的JVM?
-
是的。当你启动java时,你启动了一个新的JVM。
-
谢谢,我以为每个新进程都使用同一个JVM,但现在清楚了!
-
@Nicolas:不,不,他是说当你在一个新的 JVM 中启动一个 java 进程时,该进程启动的所有线程共享相同的内存空间。所有线程都有一个 JVM。
标签: java multithreading memory-management process