论坛首页 Java企业应用论坛

Java内存管理

浏览 9536 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (1)
作者 正文
   发表时间:2011-07-18  
michael.softtech 写道
看一下  深入了解java虚拟机 这本书吧,讲得还是比较详细的

+1 在看中...
0 请登录后投票
   发表时间:2011-07-18  
mdsp25xhm 写道
michael.softtech 写道
看一下  深入了解java虚拟机 这本书吧,讲得还是比较详细的

+1 在看中...

嗯,这本书确实不错,但是年代有点久远,不过其中许多内容还是相当不错的。建议先快速浏览一下主要章节,了解下大概,再针对你感兴趣或者需要的内容,仔细研读一番。
0 请登录后投票
   发表时间: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高级特性与最佳实践》

0 请登录后投票
   发表时间: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

你没事就在上面回帖子,很牛拜啊
0 请登录后投票
   发表时间:2011-07-19  
修补匠 写道
程序新手 写道
同样菜鸟尝试解释下...求下面正确拍砖

   首先主方法启动了一个线程,MyGreeting类信息及其字段信息方法信息都存放在了方法区(永久区)中
   在这个线程里面有一个栈与其对应 变量myGreeting放在栈中..new出来的对象放在了“唯一”的堆中
   接下来你通过myGreeting这个引用为其指向的对象赋值,在赋值之前的三个变量放在栈中,赋值之后由于是类变量,所以放在堆中。
   System 应该先去方法区(永久区)将其加载,随后调用其方法把结果显示在控制台上,过程与上面大同小异..
   
   欢迎真正懂的给出更详细讲解或者拍砖指点,代表菜鸟们感激!

 

String是对象类型,所以赋值后会保存到堆中,但int是基本类型,赋值后应该保存在栈中吧。

String类型的话,java有一个String的字符串池。

0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics