据我所知,Java没有任何管理内存的方法,因为整个内存管理是由内置的自动运行的垃圾收集器完成的,在某些情况下这可能有点低效。
我找到了这个网站,它告诉他们正在制作一个java工具和库,它们可以在没有任何垃圾的情况下工作。我想得到一些关于如何可行的合理解释。
答案 0 :(得分:5)
http://www.coralblocks.com/index.php/2015/10/is-coralfix-the-fastest-and-easiest-to-use-fix-engine/
所有Coral Blocks组件在关键路径中为GC 产生零垃圾。
我的猜测。预分配的缓冲区,没有String
个对象。正如他们所说:
在Coral Blocks,我们使用Java作为语法语言。我们的库具有零外部依赖性,我们甚至不依赖于JDK标准库。使用CoralFIX,您可以完全控制关键路径。
答案 1 :(得分:4)
不可能完全停止创建垃圾,除了某些特定任务和极其受内存限制的系统外,尝试优化垃圾创建还为时过早。很多任务都会导致某种分配。
但是,垃圾可以通过以下方式减少但不能消除:
答案 2 :(得分:4)
事实上,关于CoralFIX的文章说:
零垃圾:所有Coral Blocks组件在关键路径中为GC 产生零垃圾。
这与说零垃圾完全不同。并且只有在相对较小的一类应用中才能实现(对于Coral);即基于消息的系统,您可以通过就消息缓冲区中的字节进行就地匹配来完成所有工作。只要您需要使用普通数据结构或(大多数)标准库类,您就会生成对象。
而且......
在Coral Blocks,我们使用Java作为语法语言。
换句话说,Coral Blocks应用程序员不会编写Java代码!
是否可以编写代码来执行相同的操作?
理论上是的,但在实践中可能不是。你需要替换Java SE库(和第三方库)的大部分功能,以便你最好编写应用程序 1 用不同的编程语言。
1 - 我想,如果您的应用程序很简单并且具有最小的Java SE和外部库依赖性,那么这样做是可行的。但很少有非平凡的应用程序就是这样。
答案 3 :(得分:2)
你无法避免在java中制作垃圾,但你可以减少它。优秀而高效的代码通常不会在不使用的情况下留下任何变量你可以避免制造垃圾的一种方法是关注你未使用的东西。