我有一个最大堆为1024M的java应用程序,它的perm gen空间为256M。 是否保证此应用永远不会超过1280M(1024 + 256)?
堆栈内存是否也来自上面的堆大小,还是额外的内存消耗?
如果java应用程序使用消耗内存的本机代码,那么这个内存来自何处? heap / perm gen / more ram?
我很想知道java如何使用内存。 请评论。 任何可以提供清晰图片的链接也欢迎
三江源
答案 0 :(得分:2)
正在执行的Java应用程序使用的内存比主堆和permgen空间多。例如:
java
程序的可执行代码的内存以及由可执行文件动态链接的任何共享库。java
可执行文件,其本机库或应用程序的本机库创建的堆外数据结构,缓冲区等的内存。没有推荐的方法来预测Java应用程序的总内存使用量。即使测量它也很棘手,尤其是当您考虑到某些内存可能与其他JVM或其他非Java应用程序共享时。
答案 1 :(得分:1)
从你的问题我看到你对Java中的内存管理有多困惑。
请仔细阅读本白皮书以便更好地理解。 http://java.sun.com/j2se/reference/whitepapers/memorymanagement_whitepaper.pdf