java内存占用
① 一个java对象到底占用多大内存
Object o=new Object():
在java中空对象占八个字节,对象的引用占四个字节。所以上面那条语句所占的空间是4byte+8byte=12byte.java中的内存是以8的倍数来分配的,所以分配的内存是16byte.
举个例子:
Class O{
int i;
byte j;
String s;
}
其所占内存的大小是空对象(8)+int(4)+byte(1)+String引用(4)=17byte,因要是8的整数倍,所以其占大小为24byte.
当然,如果类里有其他对象的话,也要把其他对象的空间算进去
② javaset鍗犵敤鍐呭瓨澶у皬
javaset灏嗗崰鐢16涓瀛楄妭镄勭┖闂淬 锲犳わ纴链鍒濇垜灏嗘浔鐩鏁颁箻浠16浠ヨ幏鍙栧唴瀛樸 浣嗗疄闄呬笂锛屾疮涓𨱒$洰镄勫唴瀛樿繙杩滆秴杩16涓瀛楄妭銆 涔嫔悗锛屾垜镰旂┒浜咹ashSet镄勫疄鐜般 绠钥岃█涔嬶纴鍦ㄥ熀纭瀹炵幇涓锛屽畠瀹为檯涓婂湪鍝埚笇闆嗙殑姣忎釜𨱒$洰涓瀛桦偍浜嗕竴涓棰濆栫殑浼瀵硅薄(12涓瀛楄妭)銆 杩樻湁涓涓鎸囧悜涓嬩竴涓𨱒$洰镄勬寚阍(8涓瀛楄妭)銆 锲犳わ纴姣忎釜𨱒$洰灏嗛濆栨氮璐12 + 8涓瀛楄妭銆
锲犳わ纴姣忎釜𨱒$洰镄勬诲唴瀛树负锛16 + 12 + 8 = 36瀛楄妭銆 浣嗘槸褰撴垜杩愯屼唬镰佸苟妫镆ュ唴瀛樻椂锛屾疮涓𨱒$洰浠岖劧瓒呰繃36涓瀛楄妭銆
③ 如何查看java进程大量占用内存
如何查看java进程大量占用内存
你好,方法如下:
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
(1)top
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器
可以直接使用top命令后,查看%MEM的内容。可以选择按进程查看或者按用户查看,如想查看oracle用户的进程内存使用情况的话可以使用如下的命令:
$ top -u oracle
内容解释:
PID:进程的ID
USER:进程所有者
PR:进程的优先级别,越小越优先被执行
NInice:值
VIRT:进程占用的虚拟内存
RES:进程占用的物理内存
SHR:进程使用的共享内存
S:进程的状态。S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值为负数
%CPU:进程占用CPU的使用率
%MEM:进程使用的物理内存和总内存的百分比
TIME+:该进程启动后占用的总的CPU时间,即占用CPU使用时间的累加值。
COMMAND:进程启动命令名称
常用的命令:
P:按%CPU使用率排行
T:按MITE+排行
M:按%MEM排行
(2)pmap
可以根据进程查看进程相关信息占用的内存情况,(进程号可以通过ps查看)如下所示:
$ pmap -d 14596
(3)ps
如下例所示:
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' 其中rsz是是实际内存
$ ps -e -o 'pid,comm,args,pcpu,rsz,vsz,stime,user,uid' | grep oracle | sort -nrk5
其中rsz为实际内存,上例实现按内存排序,由大到小
④ java 在内存中占几个字节
不同的数据类型占的内存大小不同 比如int 是四个字节 char是一个字节 等等
⑤ Java程序占用内存太高了怎么办
先看下是否有内存泄露,简单的方法就是隔一段时间检查下内存,看看是否是持续上升。
然后看下资源是否可以优化,比如你加载的图片有没有resize过,尽可能减少资源的内存消耗。
游戏卡顿最主要的是FPS帧率太低,把帧率统计输出来看下。检查下UI线程里或者OpenGL线程里是否做了I/O操作,这个是造成卡顿的主要原因。把I/O操作全部放入工作线程中,UI线程只做数据读取和渲染。这样帧率就可以提高了