雖然我從來沒有見過這樣的言論,它是否存在於Java世界呢?在java中是否有像malloc/free一樣的東西?
6
A
回答
13
Java的版本malloc
是new
- 它創建一個指定類型的新對象。
在Java中,內存是爲您管理的,因此您無法明確地使用delete
或free
對象。
0
new
而不是malloc
垃圾回收器,而不是免費的。
4
Java有一個垃圾收集器。這就是爲什麼你永遠也看不到你的代碼語句(這是很好的,如果你問我)
在計算機科學中,垃圾收集 (GC)是自動的 內存管理的一種形式。這是一種特殊的資源管理案例,其中 被管理的有限資源是 內存。垃圾收集器或僅收集器嘗試收回 垃圾,或由 程序不再使用的對象 佔用的內存。垃圾收集是約翰·麥卡錫發明的約爲1959年 發明的 來解決Lisp中的問題。
3
沒有直接對應Java中存在:
Çmalloc
創建一個類型化的堆節點,並返回一個指向它允許,但是你想你訪問內存。
Java不具有無類型對象的概念,也不允許直接訪問內存。在Java中最接近malloc
的將是new byte[size]
,但是它會返回一個強類型對象,您只能將其用作字節數組。
C free
釋放一個堆節點。
Java不允許您顯式釋放對象。 Java中的對象釋放完全掌握在垃圾回收器的手中。在某些情況下,您可以影響GC的行爲;例如通過將null
分配給參考變量並調用System.gc()
。但是,這不會強制對象被釋放......並且是一種非常昂貴的方式。
3
如果你沒有好(tm),我想你可以通過JNI接口訪問原始內存。這是您可以從Java程序調用C程序的地方。當然,你必須在你的程序有權這樣做的環境中運行(瀏覽器通常不允許這種情況,除非它是自殺的),但你可以通過C指針訪問對象。
我有點奇怪原來的問題來自何處。很久以前,我完全懷疑C型內存管理和C型指針是不需要的,但在這一點上我是真正的信徒。
相關問題
- 1. 是否有像Java的pkg-config一樣的東西?
- 2. Android中是否有像Asp.net中的appSettings一樣的東西?
- 3. 像CHESS這樣的東西是否存在於Java中?
- 4. 在Centura中是否有像variadic函數那樣的東西?
- 5. 像java一樣,C++中是否有類似timer和timertask的東西?
- 6. Rails是否有像Django Rest Framework一樣的東西?
- 7. Zsh中是否有像bash_profile這樣的東西?
- 8. 是否有像.dll或.so這樣的東西,但跨平臺?
- 9. 當用UINavigationController返回時,是否有像prepareForSegue這樣的東西?
- 10. C#有像包東西在java中
- 11. 有沒有像C#中的Bundle一樣的東西?
- 12. 在C#中,C++是否有像List <string>這樣的東西?
- 13. 是否有像Project Sprouts這樣的東西,但在Python中實現?
- 14. 有沒有像Codecademy for Java的東西
- 15. 在Java中是否有類似於WebClient.DownloadString的東西?
- 16. 在Android中有沒有像Blackberry的SharedPreferences那樣的東西?
- 17. 我如何檢查是否在Python中輸入了什麼東西是一樣的CSV文件的東西
- 18. Grails在Rails中有沒有像acts_as_tree這樣的東西?
- 19. .NET BCL中是否有與java的File.deleteOnExit()等價的東西?
- 20. Erlang有沒有像寶石一樣的東西?
- 21. 是否有東西equaivlent getChildViewByID在android
- 22. XForms中是否有像「target = parent」的東西?
- 23. Objective-C中是否有類似Java Comparable接口的東西?
- 24. 有沒有像''的東西?
- 25. 批量讀取Mongo DB的最佳方式 - 是否有像這樣的東西?
- 26. 有沒有像redis中的get_next那樣的東西?
- 27. 是否有電話號碼清潔劑庫這樣的東西
- 28. MSVC是否有類似__builtin_va_arg_pack的東西?
- 29. 有沒有像CURLOPT_CONNECTIONTIMEOUT這樣的東西存在?
- 30. 是否有可能在PHP中像Java的socksProxyHost一樣?
所以我不能直接訪問內存空間? – java 2010-12-10 01:50:53
不,您無法通過任何理智的方式獲得對Java對象的底層指針/內存地址的訪問。 C#允許您使用`unsafe`關鍵字執行此操作: http://msdn.microsoft.com/en-us/library/chfa2zb8(v=VS.100)。aspx 請注意,這是非常非常少的必要。 – ClosureCowboy 2010-12-10 01:52:09