问题描述
大家好,有个问题请教一下各位:1、java代码,生成一百万条数据消耗100m内存,为什么生成数据结构是一样的50万条数据消耗的内存的65m,理论上不是应该减半吗,即消耗50m内存,不应该有这么大偏差吧;如果存在偏差,偏差在哪里?2、对上述生成的一百万数据进行排序,排序消耗内存大概是4-5M,这个消耗是不是小了点?3、有什么工具可以正确监控java方法执行时消耗多少内存?大家踊跃讨论噢,谢了,各位。
解决方案
1、jvisualvm 在运行过程中 进行堆转储2、jmap 打印堆3、垃圾回收执行的不可预测性,即何时执行是不确定的,所以数据可能不是很准确。
解决方案二:
安装JDK 在bin目录找到jconsole.exe,可以查看某java应用的消耗情况!
解决方案三:
用JDK自带的jconsole.exe或者是jvisualvm.exe监控应用程序的内存情况。这两个都在jdk的bin目录下。你说的这个情况有可能是垃圾回收自动执行了,由于你不知道什么时候垃圾回收自己就执行了,所以看到的数据会有偏差。
时间: 2024-10-30 01:13:17