में जोड़ने में विफल रहा मैंने जावा से एक बहुआयामी सरणी की प्रतिलिपि बनाई, लेकिन मुझे इसका उपयोग करने के बाद स्मृति मुक्त करने में कुछ समस्याएं आ रही हैं।जेएनआई पिन किए गए सरणी रेफ तालिका (1024 प्रविष्टियों)
मैं क्या किया है:
jfieldID h_valID = (*env)->GetFieldID(env, h_cls, "val", "[[I");
jobjectArray h_val_obj = (*env)->GetObjectField(env, h, h_valID);
int h_val_local[xdim][ydim];
for(i=0; i<xdim; i++)
{
h_val_one_dim = (jintArray) (*env)->GetObjectArrayElement(env, h_val_obj, i);
h_val_elem = (*env)->GetIntArrayElements(env, h_val_one_dim, 0);
for(j=0; j<ydim; j++)
{
h_val_local[i][j] = h_val_elem[j];
}
(*env)->ReleaseIntArrayElements(env, h_val_one_dim, h_val_elem, 0);
(*env)->DeleteLocalRef(env, h_val_one_dim);
}
(*env)->DeleteLocalRef(env, h_val_obj);
मुझे लगता है कि विधि पर 4 अधिक सरणियों है, मानकों के आधार पर सभी, मैं सूचक हो रही है तो यह उपयोग करने के बाद रिलीज़ किया था।
int *x = (*env)->GetIntArrayElements(env,x_p,0);
int *y = (*env)->GetIntArrayElements(env,y_p,0);
int *v = (*env)->GetIntArrayElements(env,v_p,0);
int *w = (*env)->GetIntArrayElements(env,w_p,0);
...
(*env)->ReleaseIntArrayElements(env, x_p, x, 0);
(*env)->ReleaseIntArrayElements(env, y_p, y, 0);
(*env)->ReleaseIntArrayElements(env, v_p, v, 0);
(*env)->ReleaseIntArrayElements(env, w_p, w, 0);
बड़ा फ़ाइलों के लिए, मैं संदर्भ मेज पर अतिप्रवाह हो रही है। मैं क्या मुक्त करना भूल रहा हूं या मैं इसे कैसे ठीक करूं?
प्रवेश करें:
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): ReferenceTable अतिप्रवाह (अधिकतम = 1024)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): JNI पिन किए गए सरणी संदर्भ तालिका में पिछले 10 प्रविष्टियों:
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): 1014: 0x46109fe8 cls = [मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/दल्विकविक (235 9 8): 1015: 0x4610a008 cls = [I (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): 1016: 0x46109fa8 cls = [मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598) : 1017: 0x46109fc8 cls = [मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): 1018: 0x46109fe8 cls = [मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/दल्विकवीएम (235 9 8): 101 9: 0x4610a008 सीएलएस = [आई (24 बाइट्स)
10-02 14: 18.88.885: डब्ल्यू/दल्विकविक (23598): 1020: 0x46109fa8 cls = [ मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): 1021: 0x46109fc8 cls = [मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): 1022: 0x46109fe8 cls = [मैं (24 बाइट्स)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): 1023: 0x4610a008 cls = [मैं (24 बाइट्स)
10-02 14 : 18: 58.885: डब्ल्यू/दल्विकविक (235 9 8): जेएनआई पिन एरे संदर्भ तालिका सारांश (1024 प्रविष्टियां):
10-02 14: 18.8885: डब्ल्यू/दल्विकविक (23598): 1024 [I 24B (4 अद्वितीय)
10-02 14: 18: 58.885: डब्ल्यू/dalvikvm (23,598): ट्रैक किए गए refs द्वारा सीधे तौर पर आयोजित स्मृति 96 बाइट्स
10-02 14:18:58 है।885: ई/dalvikvm (23,598): JNI पिन किए गए सरणी रेफरी तालिका (1024 प्रविष्टियों)
THX
आपके उत्तर के लिए धन्यवाद, लेकिन मुझे पता चला कि समस्या उस भाग में नहीं थी जिसे मैंने ऊपर पोस्ट किया था। – Deadlock