JAVA对内存的管理与c++的不同

JAVA是怎样对内存经行管理的

你好,区别如下:
Java使用垃圾收集机制,垃圾收集是一个内存管理scheme ,它在对内存块的所有引用都不存在后就自动的释放这个内存块。垃圾收集机制使得对特定种类的应用很容易编程,程序的设计者不需要考虑清除“dead”内存。C++中缺少这种机制,很多人为C++提供了garbage collectors ,有的是第三方软件,有的是在网上的共享软件。这些collectors很不完美,但方便了使用。
对于Java没有方法来使writer来手动的发现去管理内存。很明显,你不能写你自己的内存管理者,也不能在内存管理者控制的内存中构造对象。
原因:任何内存管理计划都允许程序有指针和对未使用空间的引用,这是违反特定的安全的。手动管理内存的任何形式,如holding on to dead pointers or references ,都会导致安全漏洞。在典型的Java环境中,安全是一个涉及到的严重的问题。Java applets经常在web浏览器中运行和被下载。用户可能不知道运行的applet,因为他们的浏览器是活动的。如果允许手动内存管理,不道德的人就可能发布包含不安全applet的web页。这些applet可能就被正在浏览的,没有防备的用户下载到了自己的系统中。一但下载了这些applet,就可以把私有信息返回给web页的作者。
在Java中缺少手动内存管理的问题?这使得Java在硬实时(a hard real time system)约束的系统中使用困难。当garbage collector运行时,这个问题是很难预测的。可以使用有意义的CPU时间来处理,必须建立一种方式,使得你要用的内存可靠而不会引起垃圾收集。在实时应用中使用任何Java库都可能导致垃圾收集,要注意。
温馨提示:答案为网友推荐,仅供参考
相似回答