- 浏览: 623252 次
- 性别:
- 来自: 杭州
最新评论
-
oldrat:
引用Special cases aren't special ...
武汉大学开源技术俱乐部 技术交流 第1期 -
yzsunlight:
试了试 ,不行
Android Studio SDK Manager无法正常下载如何设置 -
qianjigui:
更全面的文档:http://www.5wpc.info/it/ ...
Ruby正则表达式操作参考 -
qianjigui:
Anddy 写道Anddy 写道tag是自动创建的吗? 能手动 ...
vim的跳转 -
Anddy:
Anddy 写道tag是自动创建的吗? 能手动创建吗? 在sh ...
vim的跳转
文章列表
前导
MMTk被RVM整个封装在后端,主要调用接口是 org.jikesrvm.mm.mminterface.MemoryManager
主要接口
初始化
boot
postBoot
enableCollection
collectionEnabled
fullyBootedVM
processCommandLineArg
写栅栏
modifyCheck
统计数据
freeMemory
totalMemory
maxMemory
GC
gc
引用检查及日志
dumpRef
validRef
addressInVM
objectInVM ...
必要的整体模块
对于一个完整的内存管理工具,主要涉及:
内存映射(Address)
内存组织结构(Resource,Page)
基于内存结构的策略:分配、回收(Alloc, Collect)
内存跟踪(Trace, Log)
对应到MMTk的具体模块
系统结构
Plan
CollectorContext, MutatorContext 上下文环境
所有collector都继承于CollectorContext(包含有run()方法接口用于线程化) TLS(Thread Local storage)
所有mutator都继承于MutatorContext ...
SIGKILL和SIGSTOP信号不能被捕捉、封锁或者忽略,但是,其它的信号可以。
嵌入式Java虚拟机列表来源:http://en.wikipedia.org/wiki/List_of_Java_virtual_machines
Apogee
增量MarkSweep GC,用于可控制的GC时间等参数(RTGC)
JBed VM
Real Time GC
JamaicaVM
RTGC
MicroJVM
RTGC
PERC RTGC
PreonVM
带内存整理的GC(估计是Copying)
Avian
分代Copying GC
Squawk RTGC
典型用例
获取所有对象:
SELECT * FROM ${snapshot}.getClasses()
SELECT * FROM (SELECT * FROM java.lang.Class)
获取所有java.lang.Thread的对象及子对象:
SELECT * FROM INSTANCEOF java.lang.Thread
获取Thread的对象的引用,用于引用链分析:
SELECT OBJECTS outbounds(t) FROM INSTANCEOF java.lang.Thread t WHERE toHex(t.@objectAddress).equ ...
利用MAT分析问题
从转储(Dump)文件中调试并除错
MAT IBM官方文档
Hprof格式
利用MAT分析Android应用内存泄露
主要用途
预先定义的query
对象的根节点
Classloaders
Finalizer对象
线程及调用栈
集合类使用
泄漏定位
支配节点
手机设备操作系统架构图整理
- 博客分类:
- 读书笔记
- 软件体系结构与设计模式
整体分析材料
Android,ChromeOS, WebOS: http://hi.baidu.com/sangwf/item/0e3161238d5fe28e6f2cc337
WebOS: http://my.oschina.net/zjhe223/blog/13070
iOS: http://blog.csdn.net/cloudhsu/article/details/5795993
WindowsPhone: http://os.51cto.com/art/201004/195687.htm
Android
iOS
Windows Phone
ChromeO ...
整体介绍
MMTk是一个内存管理的工具包
,同时也是jikes虚拟机的内存管理模块。
其内部实现了多种策略的垃圾回收机制,用于进行配置使用。
主要模块
Plans
对外的整体接口:
虚拟内存的布局,初始空间的产生与管理
内存分配
垃圾回收
内存使用统计
针对多核的设计考虑:
线程内内存与全局内存(Thread-local-heap)
线程同步
缓存失效
栅栏
具体虚拟机对外的接口规格:
策略选择
断言实现(MMTk需要)
读写栅栏
的回调
垃圾回收
锁机制
内存初始化
(与系统交互)
对象模型(对象布局、GC的固有 ...
V8 Javascript engine之所以快
针对上下文的Snapshot技术
Built-in的js代码
建立AST(Abstract SyntaxTree)时内存的管理
CompileCache避免相同代码重复编译
属性的快速访问(hiden class)
Inline caching减少函数调用开销
一次性编译生成机器语言
V8系列——内存管理
分代
Copyting模式
Stop the world
多个分段:
Large Object
Code
New
Old:pointer,data
Map
GC与JS内存泄露 ...
Android 内存和性能分析方法
- 博客分类:
- Android那点事
ps -x
top
cat /proc/meminfo
dumpsys meminfo proc-id
procrank
DDMS (Android SDK tool) http://blog.csdn.net/feng88724/article/details/6460918
time command-line
vmstat
jps 虚拟机进程状况工具
jstat 虚拟机统计信息监视工具
jinfo Java配置信息工具
jmap Java内存映像工具
jhat mat 虚拟机堆转储快照分析工具
jstack Java堆栈跟踪工具
jconsole 可视化分析工具
VirtualVM 多合一故障处理工具
http://sourceforge.net/projects/sdedit/?source=directory
If you are Steve, create in your home directory a .netrc file, type:
cd ~
vi .netrc
Add the following lines in file .netrc
machine mac.mobilefish.intranet
login steve password steve_password
Make sure no one can access .netrc file, type:chmod 600 .netrc
利用~/.netrc 存放账号,且设置合理 ...
http://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html
#include "gtest/gtest.h"
extern "C" {//C functions in C++
#include "common.h"
#include "util.h"
}
static MemSpace* ams=NULL;
static HashTable* table=NULL;
static FILE* directo ...
https://groups.google.com/forum/?fromgroups#!topic/android-ndk/UT1boSyJgdA
If you linked C library in C++ code, use extern "C" { } to surround the #include directives. i.e.
extern "C" {
#include "a.h" //a.h is the head file for the C library
}