我从一个网站中注意到以下几点: JVM HotSpot内存被分成三个内存空间:
在hotSpot JVM中分配的堆栈在哪里?在本地堆里?
更新:另一个参考信息:对于64位VM,C容量=物理服务器总内存和虚拟内存- Java PermGen。
发布于 2012-06-14 01:22:37
答案是:
更新
从一个老问题来看,下面是pthread_create中请求分配线程堆栈的代码片段。JVM线程实现用来创建本机线程的方法。
mmap(0, attr.__stacksize,
PROT_READ|PROT_WRITE|PROT_EXEC,
MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)如您所见,它只是使用mmap系统调用从操作系统请求内存段。正如我在注释中所说的,这不是常规Java堆,也不是Permgen堆,也不是C本机堆。它是从操作系统中专门请求的一段内存。
作为参考,这里有一个指向mmap syscall manual entry的链接。
更新:另一个参考信息:对于64位VM,C容量=物理服务器总内存和虚拟内存- Java PermGen
海事组织,这太简单化了。(请提供一个链接到你发现这些信息的地方.这样我们才能读到它原来的形式。)
发布于 2012-06-22 18:53:03
如果您可以以任何方式找到对这些事情的访问权限,那么第二个Sun (或者Oracle现在是adays?)很快就会发出补丁。
能够访问这些东西是一个巨大的安全风险。很多大公司的系统都使用Java。在有可能找到分配空间的地方留下一个洞是不可能的。
如上所述,MMAP将分配空间并将其返回给所需的程序和空间需求。我几乎每天都用MMAP做很多事情。
也许是因为我认为在如何使用(以更好地保护我的系统)方面,我认为事情会变得更黑暗,所以肯定会有一个很好的解决办法来抵消你的工作,或者你会让美国世界警察队在你的门口敲你的门,怀疑你有不正当的行为,并在这个过程中没收你所有的设备。
https://stackoverflow.com/questions/11025459
复制相似问题