第二章

在第二章中,我有几个小疑问吧

1.在第二章中,提到本地方法栈是为虚拟机使用的Native 方法服务,那么什么是Native方法呢?
Native方法简而言之就是一个java调用非java代码(如c语言等)的接口,因为在与操作系统或其他java环境外的接口进行交互时,可能使用其他语言在效率上会更加有优势。
在JVM中,使Native方法跑起来的方法是:当一个类第一次被使用到时,它的字节码会被加载进内存,在这个被加载的字节码的入口维持着一个该类所有方法描述符的list,这些方法描述符包含这样一些信息:方法代码存于何处,它有哪些参数,方法的描述符(public之类)等等。
如果一个方法描述符内有native,这个描述符块将有一个指向该Native方法的实现的指针。这些实现在一些DLL文件内,但是它们会被操作系统加载到java程序的地址空间。当一个带有本地方法的类被加载时,其相关的DLL并未被加载,因此指向方法实现的指针并不会马上被设置。当本地方法被调用之前,这些DLL才会被加载,这是通过调用java.system.loadLibrary()实现的。

相关的知识参考:http://blog.csdn.net/wike163/article/details/6635321

2.什么是内存泄漏
以前在学习c++的时候听到过这个概念,看书时又再次看到。
内存泄漏就是在你的代码中创建对象之后,因为某种BUG的存在导致没有释放这个对象所占有的内存。在JAVA中由于存在垃圾自动收集机制,会大大减少内存泄漏的几率。

有关内存泄漏的详细内容可以参考
https://www.jianshu.com/p/54b5da7c6816

你可能感兴趣的:(第二章)