锁定老帖子 主题:Java内存管理
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2011-07-18
michael.softtech 写道 看一下 深入了解java虚拟机 这本书吧,讲得还是比较详细的
+1 在看中... |
|
返回顶楼 | |
发表时间:2011-07-18
mdsp25xhm 写道 michael.softtech 写道 看一下 深入了解java虚拟机 这本书吧,讲得还是比较详细的
+1 在看中... 嗯,这本书确实不错,但是年代有点久远,不过其中许多内容还是相当不错的。建议先快速浏览一下主要章节,了解下大概,再针对你感兴趣或者需要的内容,仔细研读一番。 |
|
返回顶楼 | |
发表时间:2011-07-18
同为菜鸟,尝试回答下... 当我们运行这个类的时候,java MyGreeting.首先操作系统将启动JVM进程。JVM的初始类加载器(bootstrap classloader)将jdk下常用的类(rt.jar)加载到内存(方法区,如果是HotSpot 就是持久代)中。并且由系统类加载器(Application Classloader)加载我们的MyGreeting。JVM生成一个Main线程来处理我们的逻辑。其中new MyGreeting对象。在Java heap创建了一个MyGreeting对象。heap中MyGreeting对象的持有一个该类元数据的引用。当我们对该对象进行操作是,线程与heap中对象发生交互。JVM为每一个线程分配一个工作内存,用来存储我们线程栈上所要用到的数据。其中工作内存与主存直接交互数据共有8种动作 以上就是我的理解,有些地方可能不对,希望大家轻拍。 推荐一本有关JVM的书,个人感觉挺适合初学者的。《深入理解Java虚拟机:JVM高级特性与最佳实践》 |
|
返回顶楼 | |
发表时间:2011-07-18
抛出异常的爱 写道 你需要的是学习一些专用工具。。。。
比如 javah c:\Program Files\Java\jdk1.6.0_11\bin\appletviewer.exe c:\Program Files\Java\jdk1.6.0_11\bin\apt.exe c:\Program Files\Java\jdk1.6.0_11\bin\extcheck.exe c:\Program Files\Java\jdk1.6.0_11\bin\HtmlConverter.exe c:\Program Files\Java\jdk1.6.0_11\bin\idlj.exe c:\Program Files\Java\jdk1.6.0_11\bin\jar.exe c:\Program Files\Java\jdk1.6.0_11\bin\jarsigner.exe c:\Program Files\Java\jdk1.6.0_11\bin\java.exe c:\Program Files\Java\jdk1.6.0_11\bin\java-rmi.exe c:\Program Files\Java\jdk1.6.0_11\bin\javac.exe c:\Program Files\Java\jdk1.6.0_11\bin\javadoc.exe c:\Program Files\Java\jdk1.6.0_11\bin\javah.exe c:\Program Files\Java\jdk1.6.0_11\bin\javap.exe c:\Program Files\Java\jdk1.6.0_11\bin\javaw.exe c:\Program Files\Java\jdk1.6.0_11\bin\javaws.exe c:\Program Files\Java\jdk1.6.0_11\bin\jconsole.exe c:\Program Files\Java\jdk1.6.0_11\bin\jdb.exe c:\Program Files\Java\jdk1.6.0_11\bin\jhat.exe c:\Program Files\Java\jdk1.6.0_11\bin\jinfo.exe c:\Program Files\Java\jdk1.6.0_11\bin\jmap.exe c:\Program Files\Java\jdk1.6.0_11\bin\jps.exe c:\Program Files\Java\jdk1.6.0_11\bin\jrunscript.exe c:\Program Files\Java\jdk1.6.0_11\bin\jstack.exe c:\Program Files\Java\jdk1.6.0_11\bin\jstat.exe c:\Program Files\Java\jdk1.6.0_11\bin\jstatd.exe c:\Program Files\Java\jdk1.6.0_11\bin\jvisualvm.exe c:\Program Files\Java\jdk1.6.0_11\bin\keytool.exe c:\Program Files\Java\jdk1.6.0_11\bin\kinit.exe c:\Program Files\Java\jdk1.6.0_11\bin\klist.exe c:\Program Files\Java\jdk1.6.0_11\bin\ktab.exe c:\Program Files\Java\jdk1.6.0_11\bin\native2ascii.exe c:\Program Files\Java\jdk1.6.0_11\bin\orbd.exe c:\Program Files\Java\jdk1.6.0_11\bin\pack200.exe c:\Program Files\Java\jdk1.6.0_11\bin\packager.exe c:\Program Files\Java\jdk1.6.0_11\bin\policytool.exe c:\Program Files\Java\jdk1.6.0_11\bin\rmic.exe c:\Program Files\Java\jdk1.6.0_11\bin\rmid.exe c:\Program Files\Java\jdk1.6.0_11\bin\rmiregistry.exe c:\Program Files\Java\jdk1.6.0_11\bin\schemagen.exe c:\Program Files\Java\jdk1.6.0_11\bin\serialver.exe c:\Program Files\Java\jdk1.6.0_11\bin\servertool.exe c:\Program Files\Java\jdk1.6.0_11\bin\tnameserv.exe c:\Program Files\Java\jdk1.6.0_11\bin\unpack200.exe c:\Program Files\Java\jdk1.6.0_11\bin\wsgen.exe c:\Program Files\Java\jdk1.6.0_11\bin\wsimport.exe c:\Program Files\Java\jdk1.6.0_11\bin\xjc.exe 你没事就在上面回帖子,很牛拜啊 |
|
返回顶楼 | |
发表时间:2011-07-19
修补匠 写道
程序新手 写道
同样菜鸟尝试解释下...求下面正确拍砖
首先主方法启动了一个线程,MyGreeting类信息及其字段信息方法信息都存放在了方法区(永久区)中 在这个线程里面有一个栈与其对应 变量myGreeting放在栈中..new出来的对象放在了“唯一”的堆中 接下来你通过myGreeting这个引用为其指向的对象赋值,在赋值之前的三个变量放在栈中,赋值之后由于是类变量,所以放在堆中。 System 应该先去方法区(永久区)将其加载,随后调用其方法把结果显示在控制台上,过程与上面大同小异.. 欢迎真正懂的给出更详细讲解或者拍砖指点,代表菜鸟们感激!
String是对象类型,所以赋值后会保存到堆中,但int是基本类型,赋值后应该保存在栈中吧。 String类型的话,java有一个String的字符串池。 |
|
返回顶楼 | |